我在Windows 7,32位操作系统的桌面视觉工作室2012 Express上使用openCV 2.4.10。
我创建了一个初始化网络摄像头的功能,拍摄图像并将其存储在矩阵中,然后返回图像矩阵。
Mat frameCapture ()
{
Mat srcCap;
//initializes structure type of cap
VideoCapture cap(0);
if(!cap.isOpened())
{
//check for camera
cout << "No camera detected" << endl;
waitKey(10);
}
//stores next frame into matrix
cap >> srcCap;
//check to see the camera took a picture
if( srcCap.empty())
{
cout << "no data in image\n";
}
//return the image matrix
cap.release();
return srcCap;
}
int main ()
{
Mat src;
src = frameCapture();
imshow (window1, src);
waitKey(0);
}
因此,在运行程序时,它会说“图像中没有数据”,这意味着srcCap.empty()返回true,然后它将为imshow函数抛出一个断言错误。但是,程序有时会运行并成功返回图像。此外,当我将函数合并到一个循环中进行图像处理时,它有时需要几张图片,然后随机吐出“图像中没有数据”并抛出相同的断言错误,或者它根本不会拍摄第一张图片并吐出“图像中没有数据”,抛出相同的断言错误。每次检测相机并打开盖子;代码永远不会说“没有检测到相机”
我的问题是导致上限的原因&gt;&gt; srcCap无法正常工作,是硬件问题吗?我正在使用的相机是一台usb 2.0可插拔显微镜。
答案 0 :(得分:0)
我认为您当前的程序只读取第一帧。大多数情况下,在读取相机框架时,第一帧可能不包含任何数据。
我建议您在main()中使用循环并读取后面的帧。