OpenCV imread(filename) fail in debug mode when using release libraries

У меня есть немного C++ кода и все работало нормально с OpenCV, кроме функции imread(file). Она правильно находила файл и загружала имя, но не загружала никаких данных.

Mat pattImage = imread(fileName, 0);

После некоторых поисков в интернете я понял, что нахожусь в режиме отладки, но с релизными OpenCV библиотеками, а не с отладочными.

debug library:    opencv_core231d.lib
release library:  opencv_core231.lib

Хотя это типичная глупая ошибка, я подумал, что это не должно быть связано, отладочные библиотеки должны позволить OpenCV отлаживать код, в то время как релизные библиотеки позволяют быстрее выполнять код, но я не понимаю, почему imread не работает.

Может ли кто-нибудь объяснить мне разницу между debug и release библиотеками в OpenCV и почему возникает эта ошибка?

Это ошибка OpenCV?

22
задан karlphillip 19 December 2014 в 14:42
поделиться

1 ответ

Можно работать вокруг этой проблемы путем изменения библиотеки времени выполнения приложения Отладки от/MDd (многопоточная отладка DLL ) к / MD (регулярная, версия выпуска многопоточного времени выполнения DLL).

Ваш код будет все еще не оптимизирован и легче отладить, чем нормальный режим выпуска, но Вы потеряете некоторую отладочную информацию (например, для катастрофических отказов во времени выполнения C). Вы также теряете некоторые функции отладки как "куча" отладки, но если Вы не будете знать то, что это тогда, то она не будет влиять на Вас.

, Чтобы сделать эту работу вокруг, просто перейдите к Свойствам> Поколение C/C ++/Code и измените "Библиотеку времени выполнения" от/MDd до / MD.

0
ответ дан 29 November 2019 в 04:53
поделиться
Другие вопросы по тегам:

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