问题:使用OpenCV2.4.11调用摄像头显示拍摄视频时报runtime error,控制台窗口出现OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow, file ……..\opencv\modules\highgui\src\window.cpp, line 261。
解决方法:在显示图片时先判断是否有数据,如下:
if (!image.empty())
{
imshow("window", image);
}
或
if (image.data)
{
imshow("window", image);
}
原因可能是:我们用opencv打开视频的时候,会自动先监测摄像头有没有读到帧,如果没有,就会报错,然后再执行你的程序,而一般打开摄像头会有一定时间的延迟。有人认为原因是在VideoCapture刚开始获取摄像头视频流的过程不返回信号,所以判断Mat是否为空,并不断循环去获取Mat。加一个if判断就是跳过系统自己