程序采用C++编写,程序大致流程为,打开两摄像头采集,在接收到串口的指令
之后,用capture.grab()抓取1号摄像头的帧,紧接着抓取2号摄像头的帧。
大致代码如下:
VideoCapture capture(1);
VideoCapture capture1(2);
while(1)
{
if(serial_command)
{
capture.grab();//程序调试此时间在20us以内
capture1.grab();//程序调试此时间在20us以内
capture.retrieve(pic1);
capture1.retrieve(apic1);
//之后是进行图像处理。
}
//清除串口标志位
cv::waitKey(1);//等待1ms
}
两摄像头相同型号,都是120帧的摄像头。但是采集出来的图像会出现以下三种。还有一种是右边更高的。没有图。
对了,拍摄的物体是运动的(匀速),速度大概在0.5m/s。每次要不就是同帧(图片偏差很小),要不就是后面抓取的摄像头会偏慢(黑边伸出的较多),还有就是先抓取的摄像头会偏慢。
请教下大家,这是什么问题,是摄像头的问题还是程序上面有问题。理论上来说我抓取时间间隔基本上就差个几十微妙。几乎可以说是同步了。但是拍出来的图片,还是会出现前后差一帧的现象,并且此现象不是规律性出现。