OpenCV C ++相机图像未保存到矩阵

时间:2015-04-02 20:03:34

标签: c++ opencv video-capture

我在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可插拔显微镜。

1 个答案:

答案 0 :(得分:0)

我认为您当前的程序只读取第一帧。大多数情况下,在读取相机框架时,第一帧可能不包含任何数据。

我建议您在main()中使用循环并读取后面的帧。