【问题标题】:Open CV delay measureOpencv延迟测量
【发布时间】:2021-01-02 00:58:34
【问题描述】:

我在我的项目中使用了带有 yolov3 和 darknet 的 openCV 库。我的应用程序是用 C++ 编写的,它读取 rtsp 流并在流中寻找人。我在我的 Nvidia Jetson Nano 上运行它,一切都很好,但有一个小问题。我的视频分析有明显的延迟。当我运行它并出现在相机视图区域时,我可以看到大约 20 秒的延迟。

我正在分析子流 (720p 2fps),但在识别时,我想在使用 ffmpg 录制的主流 (1080p 15fps) 上捕捉正确的识别时刻。为此,我需要 (1) 没有识别延迟或 (2) 在识别过程中测量此延迟,以定义我需要捕获哪一秒的主视频。 我想(1)是不可能的。

你知道openCV是否有这样的选项来显示这个延迟吗?如何测量?

附言这种延迟并不总是相同的。但我注意到它是从 10 到 20 秒,

非常感谢您的帮助;)

【问题讨论】:

  • 您是否使用 cpu 来解码来自 rtsp 摄像头的 h264 编码数据?当您刚刚通过 vlc 或 opencv videocapture 尝试简单的视频流时,您仍然会遇到这样的延迟吗?
  • 不,当我通过 vls 看到 rtsp 时没问题。我正在使用 h.264 编码流
  • 没有yolov3和opencv的纯流呢?

标签: c++ opencv yolo darknet nvidia-jetson-nano


【解决方案1】:

很难同步流,因为 fps 和流通道不同。另一个问题是 rtsp 流,openCV 可以跳过很多由 bootlenecks 引起的帧,而你无法恢复它们。

如果你看看你的靴子在哪里,你可能会找到答案。可能因为是深度学习算法,gpu/cpu 的大部分时间都在检测算法上。

我要做的是:忽略第二个流并将代码集中在主流上,在缓冲区上添加一些帧并检测,如果达到您的条件,然后您遍历该缓冲区以保存您需要的内容。

ps:由于将缓冲区保存在磁盘上需要时间,这可能会导致问题。 (也许为此创建一个线程会有所帮助)

【讨论】:

  • 感谢您的回答。我会尝试你的建议;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
  • 2017-10-03
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
相关资源
最近更新 更多