Я пытаюсь использовать новый OpenCV 2.0 API в Visual C++ MS 2008 и записал эту простую программу:
cv::Mat img1 = cv::imread("image.jpg",1);
cv::namedWindow("My Window", CV_WINDOW_AUTOSIZE);
cv::imshow("My Window", img1);
Visual Studio возвращает необработанное исключение и Консольные возвраты:
OpenCV Error: bad flag (parameter or structure field)
(Unrecognized or unsupported array type) in unknown function,
file ..\..\..\..\ocv\opencv\src\cxcore\cxarray.cpp, line 2376
Изображение не отображено. Кроме того, окно "My Window" имеет странную подпись: "Окно ÌÌÌÌMy", которое не зависит от имени.
"Старое" использование API C управляет как cvLoadImage, cvNamedWindow или работы cvShowImage без любой проблемы для того же файла изображения. Я попробовал много другого материала без успеха.
Я ценю любую справку здесь.
Konrad
Есть справка по этой проблеме.
Решение состоит в том, что стандартные файлы библиотеки opencv в компоновщике не работают должным образом. Вместо этого попробуйте использовать файлы библиотеки отладки следующим образом:
В Visual C ++:
перейдите в Project-> Properties (или Alt-F7) Configuration Properties-> Linker-> Input-> Additional Dependencies
заменить обычный "cv210.lib cxcore210.lib highgui210.lib" на "cv210d.lib cxcore210d.lib highgui210d.lib" - библиотеки отладки.
Команды API OpenCv 2.0 теперь должны работать.
Как я только что прокомментировал, imread
у меня тоже не работает. Небольшой поиск в Google показывает, что у других людей такая же проблема; Думаю, это ошибка в коде библиотеки. А пока вот хакерский обходной путь:
IplImage* img = cvLoadImage("lena.jpg");
cv::Mat lena(img);
cvReleaseImage(&img);
Таким образом, вы можете по крайней мере использовать C ++ API для всего остального.