0

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

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

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

ps 这个延迟并不总是一样的。但我注意到它是从 10 到 20 秒,

非常感谢您的帮助;)

4

1 回答 1

2

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

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

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

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

于 2020-09-15T19:12:17.747 回答