OpenCV 3.1 imread.empty() — всегда пустой, если относительный путь, прерывается, если нет

#c #visual-studio #opencv #imread

#c #visual-studio #opencv #imread

Вопрос:

Недавно я начал использовать Visual Studio 2015 для работы с OpenCV (руководствуясь руководством), но я не могу заставить это работать. Итак, проблема в том, что если я указываю расположение файла относительно (просто используйте «imageName.extens» в качестве аргумента) и запускаю программу из VS, image.empty() всегда true . Я попробовал * .jpg, * .bmp, * .png — все то же самое.

Когда я точно указываю местоположение, сохраняя его в строке, отображается окно, а затем происходит сбой. То же самое происходит, когда я запускаю приложение через cmd. Я читал, что у людей была эта проблема, image.empty() когда они смешивали библиотеки debug и relase, но это не так — я указал библиотеки для отладки и выпуска в соответствующей таблице свойств.

У меня больше нет идей с этим, я боролся с этим несколько дней, я был бы очень признателен за помощь. Я даже обновился с 2.4 до 3.1, думая, что это может быть проблемой. Этого не было. Заранее большое вам спасибо.

Вот код:

 #include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <string>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
if (argc != 2)
{
    cout << " Usage: display_image ImageToLoadAndDisplay" << endl;
    return -1;
}
else if (argc > 1) {
    cout << argv[1] << endl;
}

Mat image;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // Read the file  IMREAD_COLOR

if (image.empty()) // Check for invalid input
{
    cout << "Could not open or find the image" << std::endl;
    return -1;
}

namedWindow("Display window", WINDOW_NORMAL); // Create a window for display.
imshow("Display window", image); // Show our image inside it.

//waitKey(0); // Wait for a keystroke in the window - doesnt work
getchar();
getchar();
return 0;
}
  

Комментарии:

1. вы могли printf(getcwd()) бы посмотреть, действительно ли текущий каталог является тем, который вы ожидаете.

2. Спасибо, я на самом деле использовал неправильное местоположение для хранения своих изображений. Правильный… Visual Studio 2015Projectsconsoleapplication 2consoleapplication 2 не так, как я думал, каталог с исполняемым файлом: .. Visual Studio 2015 Projects consoleapplication 2 x64 Release . Теперь, когда это решено — есть идеи, почему он выходит из строя?

3. это совершенно другой вопрос. Что говорит отладчик?

4. Решаемая. Простите меня, но хотя waitKey() не работал (предположительно) в OpenCV 2.4, он работал сейчас. Приложение завершило работу из-за существования getchar(). Отладчик сообщил мне только о выходе потоков, возвращающих 0 в режиме выпуска, и только о том, что мое приложение завершило возврат -1. Или, возможно, я делаю что-то не так в VS. Большое вам спасибо, это действительно беспокоило меня.