C++ 仅针对usb网络摄像头,OpenCV在imShow上崩溃

C++ 仅针对usb网络摄像头,OpenCV在imShow上崩溃,c++,qt,opencv,window,video-capture,C++,Qt,Opencv,Window,Video Capture,我正在尝试使用Qt获取openCV设置。我正在使用QtCreator,尽管我目前只进行C++/opencv调用。这段代码适用于我的集成网络摄像头,但当我切换到usb摄像头时,我收到一个windows错误,告诉我opencv.exe已崩溃,Qt告诉我程序意外完成。有趣的是,如果我将imshow改为imwrite,我会从网络摄像头中获得一个文件的输出,这样截图似乎可以正常工作,但我无法显示 #include <opencv2/core/core.hpp> #include <ope

我正在尝试使用Qt获取openCV设置。我正在使用QtCreator,尽管我目前只进行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;
}  
#包括
#包括
#包括
使用名称空间cv;
int main(int argc,char*argv[])
{
视频捕获上限(0);
//打开默认相机,使用与0不同的东西,否则;
//查看视频捕获文档。
如果(!cap.isOpened())
返回1;
对于(;;)
{
垫架;
取回盖(框架);
if(frame.empty())中断;//视频流结束
imshow(“这就是你,微笑!:)”,框架);
如果(waitKey(1)==27)中断;//按ESC停止捕获
}
//退出后,摄像机将自动关闭
//cap.close();
返回0;
}  

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

如果没有帮助,请更换

cap.retrieve(frame);


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

如果没有帮助,请更换

cap.retrieve(frame);


是的,我忘了提到我确实从第(0)章更改为第(1)章。实际上,这取决于当我启动usb摄像头的cap(0)和集成摄像头的cap(1)时,usb摄像头是否在。如果换成2或3,运气就不好了,他们会在最后一刻退出!调用。我会尝试重新安装驱动程序。虽然我认为它们可以工作,因为我可以将帧写入文件Yes忘了提到我确实从cap(0)更改为cap(1)。实际上,这取决于当我启动usb摄像头的cap(0)和集成摄像头的cap(1)时,usb摄像头是否在。如果换成2或3,运气就不好了,他们会在最后一刻退出!调用。我会尝试重新安装驱动程序。虽然我认为它们可以工作,因为我可以将帧写入文件