C++ API OpenCV 2.0 с помощью imshow: необработанное исключение возвратов и “плохой флаг”

Я пытаюсь использовать новый 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

6
задан Konrad 12 April 2010 в 15:23
поделиться

2 ответа

Есть справка по этой проблеме.

Решение состоит в том, что стандартные файлы библиотеки 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 теперь должны работать.

6
ответ дан 8 December 2019 в 12:19
поделиться

Как я только что прокомментировал, imread у меня тоже не работает. Небольшой поиск в Google показывает, что у других людей такая же проблема; Думаю, это ошибка в коде библиотеки. А пока вот хакерский обходной путь:

IplImage* img = cvLoadImage("lena.jpg");
cv::Mat lena(img);
cvReleaseImage(&img);

Таким образом, вы можете по крайней мере использовать C ++ API для всего остального.

6
ответ дан 8 December 2019 в 12:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: