Подтвердить что ты не робот

Простая команда OpenCV работает в режиме отладки, но не в режиме Release

Я пытаюсь загрузить в учебный XML файл с помощью CascadeClassifier::load(), и он отлично работает в режиме отладки, но в режиме выпуска я получаю ошибку времени выполнения.

Ошибка, которую я получаю:

Необработанное исключение в 0x000007feefbf4938 в Testing.exe: 0xC0000005: Место записи нарушения доступа 0x0000000000000027.

Мой код выглядит следующим образом:

CascadeClassifier c;
if (!c.load("C:/data/haarcascade_frontalface_alt.xml"))
{
    exit(1);
}

Сбой кода на линии загрузки. Почему это произойдет?

4b9b3361

Ответ 1

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

См. этот пост.

Ответ 2

Нет догадок о том, почему ваша строка load приведет к нарушению доступа только для сборки релиза. Итак, следующий шаг - задействовать ваши двоичные файлы с открытым кодом OpenCV с протоколированием или printfs или что-то для вас. Этот тип отладки работает в этом сценарии, поскольку у вас есть источник для OpenCV и возможность перекомпиляции с VS2010.

Ответ 3

Я считаю, что ваша ошибка связана с загрузкой файла XML и вашего "рабочего каталога" в настройках вашего проекта.

Если вы перешли в окно "Свойства" вашего проекта, убедитесь, что "Рабочий каталог" в параметрах "Отладка" верен. Измените "Конфигурация" (между Debug и Release), и вы сможете сравнить.

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

EDIT:

Существует ли этот файл и является ли он надлежащим XML?

Ответ 4

Это довольно странно. Проверьте свои варианты для отладки и выпуска версии, убедитесь, что используете правильную версию библиотек.

Я попытался запустить код в моем проекте и отлично работает как в отладочной, так и в выпуске версии, с opencv 2.3.1

Попробуйте добавить эти строки кода в другой проект, с версией выпуска, где вы уже используете opencv. Если он работает, проблема в настройках конфигурации.