SOLVED MV-MIPI-IMX296硬触发模式下opencv无法读取图像
-
在Raspberry Pi 4B板子上,测试提供的demo(在视频流模式下),opencv能够读取相机采集的图像。但我的目标是在硬触发模式下,采用opencv读取并处理图像,结果显示无法读取。我的代码如下
运行程序显示,程序一直处于等待触发信号阶段,未继续执行opencv命令打开摄像头。
我将程序顶部v4l2-cmd部分代码注释掉,在命令行运行v4l2-cmd命令,使其开始在硬触发模式下等待触发信号。然后,在新的命令行窗口运行程序,结果显示无法读取图像,如下图所示:
请问如何解决该问题?谢谢! -
@danny 你的第一个图中的代码。逻辑上,需要先执行打开摄像头,等待图像数据。然后,用另一个进程去触发摄像头出图。
你现在先触发摄像头出图,然后再顺序执行程序,打开摄像头,等待来图,早已晚了。 -
@veye_xumm 非常感谢!您是对的,我修改了代码,用另一个进程触发相机,opencv能够读取图像。但我发现opencv是从第5个trigger触发后读取图像。我想应该是相机内部设置了4个buffer,前4帧图像被存入buffers。然后,第5帧被采集,进入buffer,挤出第1个buffer的图像(即第1帧图像)。不知我的理解对不对,望告知。另外,怎么将buffer数量设置为1个呢?我想立即读取,因为我的应用需要和其他设备时间同步。
-
@danny 相机内部没有内存,不可能缓存几帧buffer。
V4L2底层驱动会有v4l2buffer,数量也是可设的,但是据我理解其机制并不是你说的后入挤出前入的机制。应该是可以正常触发一次,收到一次。
你可以先试试我们的例程,两个例程——一个是用v4l2-ctl获取图像,一个用opencv获取图像。 -
@veye_xumm 好的,感谢解答。