這是我的代碼我複製/粘貼here:無法從凸輪捕捉視頻2.4.7
#include "opencv2/opencv.hpp"
using namespace cv;
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
Mat edges;
namedWindow("edges",1);
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if(waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
但我得到這個錯誤:
OpenCV error: Assertion failed (scn==3 || scn==4)
in unknown function, file ..\..\..\..\opencv\modules\imgproc\src\color.cpp, line 3737
我使用的是Windows 7 x64,Visual Studio 2008,OpenCV 2.4.7
可能是什麼問題?
編輯:
它有時它的工作原理,有時沒有。
編輯2:
我編輯VideoCapture帽(0);至cv :: VideoCapture cap(0);然後,我重建我的解決方案並運行它。它第一次工作,我試圖第二次運行,它給了我同樣的錯誤。
EDIT 3:
我甚至已編輯爲(;;):
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
imshow("edges", frame);
if(waitKey(30) >= 0) break;
}
這次我得到另一個錯誤:
OpenCV error: Assertion failed (size.width>0 && size.height>0)
in unknown function, file ..\..\..\..\opencv\modules\highgui\src\window.cpp, line 261
我想問題是imshow。
您能告訴我程序中發生了什麼錯誤嗎?如在,它是否出現在'cap >> frame'或'cvtColor'之後?請放下斷點並回到我身邊。 – scap3y
@ scap3y我把cout <<「aaaaa」<< endl;後蓋>>框架;和cout <<「bbbb」<< endl;在cvtColort之後,它會打印「aaaaa」,然後停止:) – torayeff
@ scap3y還有另一個錯誤(size.width> 0 && size.height> 0) – torayeff