昨天晚上想把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; } ; }