Необработанное исключение в OpenCV + VS2010 - PullRequest
5 голосов
/ 17 ноября 2011

Я могу успешно построить и выполнить приведенный ниже код:

 IplImage* img = cvLoadImage("C:\\hello.jpg");
 cvNamedWindow("myfirstwindow");
 cvShowImage("myfirstwindow", img);

Но я получил необработанное исключение, когда выполнил приведенный ниже код:

    cv::Mat image= cv::imread("boldt.jpg");
    cv::namedWindow("Image");
    cv::imshow("Image",image);

, хотя я могу построить кодуспешно.

Я использую opencv2.2 с версией VS2010 x86 на версии windows 7 x86.пожалуйста, помогите!

обновление: я пробовал на winxp, и он работает нормально ... и он работает нормально с win7 только в режиме Release.

Ответы [ 6 ]

5 голосов
/ 17 ноября 2011

Это может быть проблема, когда люди не понимают, что когда VStudio запускает ваше приложение, оно пытается найти свои ресурсы в том же каталоге, что и скомпилированный исполняемый файл, и не в папка, в которой находятся исходные файлы.

Ваш первый код работает, потому что вы загружаете изображение, передавая полный путь в файл!

Вот почему так важно проверять успешность функций при кодировании:

try 
{
    cv::Mat image = cv::imread("boldt.jpg");

    if (!image.data) 
        printf("!!! No data !!!");
} 
catch(std::exception e) 
{
    printf("Exception: [%s]\n", e.what());
}

Такая практика программирования сэкономит вам много времени.

EDIT

Ну, если сбой все еще происходит, это означает, что это может быть ошибка cv::namedWindow() или cv::imshow(), и мои деньги на cv::namedWindow().

Другие пользователи сообщили о похожем поведении в Windows:

OpenCV 2.2 Windows XP MinGW при сбое сборки namedWindow, imshow

Сбои открытого резюме под WIN7 при открытии NamedWindow

namedWindow () вызывает сбой в opencv 2.3.1? (Затмение + MinGW на XP, C ++)

Похоже, что , чтобы решить проблему, вам нужно отключить SSE оптимизации.

3 голосов
/ 17 ноября 2011

Я использую OpenCV 2.3.1, и когда я запускаю его в режиме Release (связан с релизом highgui lib), все в порядке.Когда я переключаюсь в режим отладки (все еще связанный с релизом highgui lib), он вылетает.Помогло связывание с отладочной библиотекой highgui.

Возможно, у вас та же проблема ...

1 голос
/ 05 октября 2012

У меня точно такая же проблема, как было описано.

Оказывается, проблема очень сильно связана с настройками компоновщика!

Я нашел ответ в другой теме: OpenCV 2.3 и Visual Studio 2010

Вот оно:

"Свойства вашего проекта (щелкните по нему правой кнопкой мыши)

  • C /C ++
    • General
      • include каталог добавить <ваш каталог> \ OpenCV2.3\ include \ opencv2, <ваш каталог> \ OpenCV2.3 \ include \ opencv и <ваш каталог> \ OpenCV2.3 \ include
  • компоновщик

    • Общие сведения
      • Элемент списка
    • Вход
      • Добавить все библиотеки, например opencv_core230d.lib opencv_highgui230d.lib и так далее ... "

После того, как я сделал абove, я могу запустить imshow и imread + все остальные функции cpp без проблем!Автор, который задал вопрос, вероятно, уже решил его.но на всякий случай есть другие люди, которые ведут сюда в поисках того же решения!

ура!

1 голос
/ 17 ноября 2011

Проверяли ли вы вывод функции imread ()?

if(image.empty())
{
        cout << "where's my image?" << endl;
        return 0;
}
0 голосов
/ 05 ноября 2017

Отметьте папки, которые генерируют компиляцию, потому что в одной из них находится скомпилированный файл .exe, и возможно, что изображение, которое вы хотите открыть, отсутствует.В моем случае .exe (в режиме отладки) находился в C: \ Users \ Имя \ source \ repos \ HolaMundox \ x64 \ Debug, и я не создавал свой .cpp, который находился в C: \ Users \ Name \ source\ \ репо HolaMundox.Нечто подобное будет применяться в режиме Release.Другое дело, что вы должны тщательно проверить расширение изображения, если это .jpg, .jpeg, .bmp и т. Д ... одна ошибка, которая у меня была, это то, что я поставил extención .jpg, и это было .jpeg.

0 голосов
/ 24 ноября 2012

Убедитесь, что к пути добавлен «C: \ OpenCV2.4.3 \ build \ x86 \ vc10 \ bin». НЕ (!) "C: \ OpenCV2.4.3 \ build \ x86 \ vc9 \ bin". Это может вызвать проблему.

Для использования opencv с visual studio есть два действительно хороших документа:

Viual Studio 2010 и OpenCV-2-4-x

Официальная OpenCv-документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...