OpenCV仅在usb网络摄像头上崩溃

时间:2016-03-06 03:28:47

标签: c++ qt opencv window video-capture

我试图用Qt设置openCV。我正在使用Qt创建者,虽然我目前只进行C ++ / opencv调用。这个代码适用于我的集成网络摄像头但是当我切换到我的USB摄像头时,我得到一个Windows错误告诉我opencv.exe已经崩溃,Qt告诉我我的程序意外完成。有趣的是,如果我将imshow更改为imwrite,我会从网络摄像头中获取文件中的输出,这样捕获似乎无法正常显示。

#include <opencv2/core/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/videoio.hpp>

using namespace cv;
int main(int argc, char *argv[])
{
    VideoCapture cap(0);

    // open the default camera, use something different from 0 otherwise;
    // Check VideoCapture documentation.
    if(!cap.isOpened())
        return 1;

    for(;;)
    {
          Mat frame;
          cap.retrieve(frame);
          if( frame.empty() ) break; // end of video stream

          imshow("this is you, smile! :)", frame);
          if( waitKey(1) == 27 ) break; // stop capturing by pressing ESC
    }
    // the camera will be closed automatically upon exit
    // cap.close();
    return 0;
}  

1 个答案:

答案 0 :(得分:0)

我猜测当你使用usb cam时,你将参数更改为VideoCapture cap(1)而不是cap(0)。 cap(1)是您的USB摄像头驱动程序,可能需要单独安装。尝试上限(2)或上限(3),看看你是否通过usb相机获得imshow的输出。

如果没有帮助,请替换

cap.retrieve(frame);

cap>>frame;