Почему странно работает функция imread() в opencv 3.1 при работе в Visual Studio 2015? Добрый день. Столкнулся с странной проблемой с функцией imread().
Если мы пишем так:Mat image_source = imread("C://Users//deus//Documents//MEGA//test_radius//Debug//k_image.jpg", CV_LOAD_IMAGE_GRAYSCALE);
То изображение загружается.
если так Mat image_source = imread("k_image.jpg", CV_LOAD_IMAGE_GRAYSCALE);
То не загружается, хотя в доках указано что всё должно грузиться.
Для эксперимента закинул файл в папку Debug, куда компилируется exe и даже в папку проекта. Он не находит изображение k_image.jpg.
После вопроса гуглу проблема не решилась. Там были предложения использовать вместо Debug - Release, эффекта это не дало.
Далее менял "k_image.jpg" на "k_image.jpg.jpg" тоже толку не дало. Смысл в том чтобы он из папки в которой находится .exe брал изображение.

21 Авг 2019 в 06:29
203 +1
0
Ответы
1

Возможно, проблема заключается в неправильно заданном пути к изображению. В данном случае, если вы используете относительный путь к изображению ("k_image.jpg"), то OpenCV будет искать изображение относительно рабочей директории, в которой запускается ваше приложение, а не относительно папки, в которой находится исполняемый файл (.exe).

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

Получить текущую директорию, в которой находится .exe файл:#include <windows.h>
TCHAR szPath[MAX_PATH];
GetModuleFileName(NULL, szPath, MAX_PATH);Извлечь путь к папке из пути к .exe файлу:string exePath = szPath;
string exeDir = exePath.substr(0, exePath.find_last_of("\\"));Добавить к пути к папке исполняемого файла название изображения:Mat image_source = imread(exeDir + "\\k_image.jpg", CV_LOAD_IMAGE_GRAYSCALE);

Это позволит вам загрузить изображение из папки, в которой находится ваш .exe файл. Надеюсь, это поможет вам решить проблему с загрузкой изображения в OpenCV 3.1.

20 Апр в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 829 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир