Я использую компьютер Mac OS X 10.6.У меня OpenCV 2.1 x64, скомпилированный из исходного кода с использованием Xcode и его компилятора GCC.
У меня возникли проблемы с использованием функций чтения видео на C ++ в OpenCV.Вот простой тестовый код, который я использую (пришел прямо из документации OpenCV):
#include "cv.h"
#include "highgui.h"
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(200) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
Программа компилируется нормально, но когда я пытаюсь ее запустить, я вижу, что на моей веб-камере загорается зеленый светЧерез несколько секунд программа завершает работу с сообщением об ошибке:
OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat, file /Users/mark/Downloads/OpenCV-2.1.0/src/cxcore/cxarray.cpp, line 2476
terminate called after throwing an instance of 'cv::Exception'
what(): /Users/mark/Downloads/OpenCV-2.1.0/src/cxcore/cxarray.cpp:2476: error: (-206) Unrecognized or unsupported array type in function cvGetMat
В режиме отладки матрица все еще кажется пустой после строки cap >> frame.
Я получаю похожее поведение, когда пытаюсь сделать захват из видеофайла или изображения, поэтому это не камера.Что не так, как вы думаете?Что я могу сделать, чтобы сделать эту работу?
РЕДАКТИРОВАТЬ: Я хотел бы добавить, что если я использую функции C, все работает нормально.Но я бы хотел придерживаться C ++, если смогу.
Спасибо