我试图用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;
}
答案 0 :(得分:0)
我猜测当你使用usb cam时,你将参数更改为VideoCapture cap(1)而不是cap(0)。 cap(1)是您的USB摄像头驱动程序,可能需要单独安装。尝试上限(2)或上限(3),看看你是否通过usb相机获得imshow的输出。
如果没有帮助,请替换
cap.retrieve(frame);
与
cap>>frame;