Я пытаюсь разработать простое привет мир для OpenCV, но заканчиваюсь идеи относительно того, почему он не работает.
Когда я компилирую и выполняю этот код:
#include <cv.h>
#include <highgui.h>
int main(int argc, char* argv[])
{
IplImage* img = cvLoadImage( "myjpeg.jpg" );
cvNamedWindow( "MyJPG", CV_WINDOW_AUTOSIZE );
cvShowImage("MyJPG", img);
cvWaitKey(0);
cvReleaseImage( &img );
cvDestroyWindow( "MyJPG" );
return 0;
}
Я получаю серое поле о 200x200 вместо обозначенного .jpg файла. Если я использую другой jpg, я получаю тот же вид окна, и если я вставил недопустимое имя файла, я (ожидал) очень крошечное окно.
Я использую Visual Studio 2008 в соответствии с Windows 7 Professional.
Большинство примеров программ, кажется, хорошо работает, таким образом, я вдвойне смущен, как тот код загружает образец jpgs очень хорошо, но в коде выше его не работает (даже попробовал образец jpeg).
Исполняемые файлы, произведенные компиляцией, хорошо работают, однако отладчик Visual Studio 2008 года загружает нулевого указателя в img каждый раз, когда я пытаюсь выполнить отладчик - независимо, если расположение файла является неявным или явным.
Это действительно похоже, что есть проблема с пути к myjpeg.jpg
, поскольку текущий каталог может быть отличным, когда вы работаете под отладчиком.
По умолчанию текущий каталог, который использует отладчик Visual Studio, является каталог, содержащий файл .vcproj
. Vcproj .
Вы на 100% уверены, что вы правильно проехаете абсолютный путь? Попробуйте пройти тот же путь к Fopen
и посмотрите, возвращается ли он NULL
. Если это так, то путь неверный.
Если вы хотите точно видеть, какой файл является библиотекой, пытаясь открыть, вы можете использовать монитор проекта с фильтром myjpeg.jpg
.
Какая версия OpenCV вы используете? Я попробовал ваш код на последнем (OpenC2.0), и он работает нормально. Вы можете скачать OpenCv2.0 из здесь .
Если вы хотите, чтобы последняя сборка, вы можете получить чек с SVN из здесь .
Попытка добавить HAVE_JPEG
в определения препроцессора.