我正在使用opencv和C++进行项目工作。 Opencv的版本是3.1。硬件设置是Nvidia GT460和Intel i7 3820,64Gb RAM。我试图实现多个相机设置,所有相机馈送将合并成一个大马赛克。在早期阶段,4x4以后可能会更大。之后,我将分析这个马赛克并跟踪多个对象。在opencv中创建摄像头源的马赛克,没有明显的延迟
问题是,当我使用Opencv中的捕获命令创建摄像头馈送,然后将其存储到矩阵中时,分析并显示它。两个摄像头源已经有很大的FPS问题。我已经测试了三个USB源以及多个UDP或RTSP流。使用USB时,延迟并不是最大的问题,但FPS就像是在馈送之间切分。使用流方法给我低FPS和高延迟(大约15秒)。我也意识到,即使我有相机指向相同的东西,相机馈送之间也有不同的延迟。
有没有人能帮我解决类似的问题? Opencv的问题是它不能同时分析更多活体饲料吗?
我的继承人合并代码:
merged_frame = Mat(Size(1280, 960), CV_8UC3);
roi = Mat(merged_frame, Rect(0, 0, 640, 480));
cameraFeed.copyTo(roi);
roi = Mat(merged_frame, Rect(640, 0, 640, 480));
cameraFeed2.copyTo(roi);
roi = Mat(merged_frame, Rect(0, 480, 640, 480));
cameraFeed3.copyTo(roi);
roi = Mat(merged_frame, Rect(640, 480, 640, 480));
cameraFeed4.copyTo(roi);
你是否在每个循环中重新创建merged_frame?这种方法基本上是正确的,只是避免不必要的复制或创作。 – Miki
我会为每个摄像头捕捉任务设置一个线程。捕获完成后,向主线程发送msg以更新大帧。 – Ripi2
感谢您的回复,我已经将merged_frame的创建移出了循环,并且它稍微改进了性能,现在我将尝试创建更多线程来查看它是否会更好地执行。 –