调试opencv调用摄像头程序时碰到的问题

时间:2021-05-23 19:25:37

昨天晚上想把opencv学习笔记整理一下,当跑opencv调用摄像头的程序的时候老是出现Assertion failed (size.width>0 && size.height>0) in cv::imshow,最后查阅资料知道了是因为调用imshow()函数的时候传入的Mat为空导致的,可能是刚开始的时候摄像头并没有初始化成功,就调用imshow()导致程序已启动就down掉了,只要在while循环中判断一下传入的Mat是否为空就解决了

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char* argv[])
{
    VideoCapture cap();
    //设置摄像头
    cap.);
    cap.);
    //确认是否成功打开摄像头
    if (!cap.isOpened()){
        cout << "打开摄像头失败,退出";
        exit(-);
    }
    namedWindow("Capture", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
    )
    {
        Mat frame;
        cap >> frame;
        if (!frame.empty())
        {
            imshow("Capture", frame);

        }

        ) >= ) break;

}
    ;
}