qq_23229787
大棒棒猪
2019-01-29 16:04

双摄同步问题,利用opencv的capture.grab() 抓取运动物体图片,两摄像头总会出现一块一慢的情况。

5
  • c++
  • tensorflow

程序采用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。每次要不就是同帧(图片偏差很小),要不就是后面抓取的摄像头会偏慢(黑边伸出的较多),还有就是先抓取的摄像头会偏慢。

请教下大家,这是什么问题,是摄像头的问题还是程序上面有问题。理论上来说我抓取时间间隔基本上就差个几十微妙。几乎可以说是同步了。但是拍出来的图片,还是会出现前后差一帧的现象,并且此现象不是规律性出现。

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

2条回答