刚刚研究OpenCV,所以遇到点问题,自己把问题和解决方法记录一下。
以下是网上流传的打开摄像头的OpenCV程序
VideoCapture cap(0);
if(!cap.isOpened())
{
return -1;
}
Mat frame;
Mat edges;
bool stop = false;
namedWindow("aa", 1);
while(!stop)
{
cap>>frame;
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("aa",edges);
if(waitKey(30) >=0)
stop = true;
}
return 0;
程序在运行时候出现错误,cvtColor出现断言错误,发现cap>>frame的时候,摄像头返回的是空矩阵,导致cvtColor出现错误。
当时出现的情况,是杀毒软件报是否允许程序时候摄像头,所以我认为是杀毒软件的原因导致,所以退出杀毒软件,发现还是不可以。于是最终得到结论,摄像头在一开始初始化时候,就读数据可能会读到空数据。于是更改后的程序
VideoCapture cap(0);
if(!cap.isOpened())
{
return -1;