Я использую машину Mac OS X 10.6. У меня есть OpenCV 2.1 x64, скомпилированный из исходного кода с помощью Xcode и его компилятора GCC.OpenCV C++ Video Capture не работает
У меня возникли проблемы с использованием функций чтения видео 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
в режиме отладки, матрица по-прежнему кажется пустым после линии рамки колпачок >>.
Я получаю подобное поведение при попытке захвата из видеофайла или изображения, поэтому это не камера. Как вы думаете, что не так? Что я могу сделать, чтобы сделать эту работу?
EDIT: Я хотел бы добавить, что если я использую функции C, все будет хорошо. Но я хотел бы придерживаться C++, если можно.
Благодаря
Я сузил проблему, крышка >> рамка, похоже, не захватывает рамку в матрицу. матрица остается пустой после шапки >> frame – amatsukawa