Почему OpenCV отклоняет cvLoadImage ("string.ext"), но принимает cvLoadImage (argv [1])? - PullRequest
0 голосов
/ 15 января 2009
#include "cv.h"
#include "highgui.h"
#include <stdio.h>


int main(int argc, char* argv[]){
    cvNamedWindow("Window1", CV_WINDOW_AUTOSIZE);
    IplImage* image = 0;
    ->->image = cvLoadImage(argv[1]);<-<-
    if(!image) printf("Unable to load image!");
    cvShowImage("Window1", image);
    char c = cvWaitKey(0);
    cvReleaseImage(&image);
    cvDestroyWindow("Window1");
    return 0;
}

Если я заменяю указанную строку на cvLoadImage("247.png"), я получаю пустое окно, и изображение остается равным нулю

Если я запускаю exe и даю ему 247.png в качестве аргумента, это просто денди. Если я вставлю «247.png» прямо в код, а затем соберу и запустлю его в Visual Studio 2008, произойдет сбой. Если я собираю и запускаю из командной строки, он работает.

Почему это? Я немного устал от движения вперед без срыва.

Ответы [ 3 ]

2 голосов
/ 15 января 2009

Вы уверены, что "247.png" находится в текущем рабочем каталоге, если у вас есть жестко закодированное имя?

Запустите программу под чем-то вроде Process Monitor , чтобы увидеть, какой файл действительно открывается (или какие могут быть ошибки ввода-вывода файла).

После внесения изменений, чтобы добавить дополнительную информацию к вопросу (проблема возникает при запуске из VS2008), это почти наверняка ваша проблема. Текущий каталог, в котором VS запускает программу, не является каталогом с файлом «247.png».

0 голосов
/ 23 февраля 2009

В Project-> Properties-> Configuration Properties-> Debugging есть поле «Рабочий каталог». Установите это в каталог, в котором вы хотите выполнить, и это должно решить проблему.

0 голосов
/ 15 января 2009

Можете ли вы проверить, какой у вас cwd?

Вы можете #include <direct.h> и использовать функцию _getcwd, чтобы увидеть, что это такое. Это, вероятно, укажет вам на виновника.

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