很久以前碰到过这个问题,当时也没细究,单步调试看了一下数据就没管了。今天有个同事标定相机的时候碰到这个问题来问我,自己也就看了看,并将自己尝试的解决方案记录下来供大家参考,当然也没有详细的去了解为什么会产生这样的问题。(恰好自己的笔记本也出现这个问题)
此问题,初步判断应该是驱动或多目引起的。
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
VideoCapture cap(0);
if (!cap.isOpened())
{
cout << "Can not open a capture object." << endl;
return -1;
}
Mat image;
for(;;)
{
// 一般情况下读取摄像头的方式
//if(!cap.read(image))
//{
// cout << "Can not read images." << endl;
// return -1;
//}
//imshow( "image", image );
if( !cap.grab() )
{
cout << "Can not grab images." << endl;
return -1;
}
else
{
if( cap.retrieve(image) )
{
imshow( "image", image );
}
else
{
break;
}
}
if( waitKey( 30 ) >= 0 )
break;
}
return 0;
}