cvLoadImage, возвращающий NULL

Я работаю на Ubuntu 12.04,32 битной платформе с OpenCV версии 2.4.1 на Eclipse Ide. Функция cvLoadImage () возвращает мне значение NULL даже после помещения изображения в текущее местоположение проекта, где у меня есть файл cpp.

#include "highgui.h"#include<iostream>
using namespace std;
int main( int argc, char** argv )
{
char image[80]="baboon.jpg";
IplImage* img = cvLoadImage(image,CV_LOAD_IMAGE_COLOR);
cout<<img<<endl;
}

Следующее — мой каталог включаемых файлов:

-Я / usr / local / include / opencv -I / usr / local / include

а также

Ниже приведены файлы библиотеки:

/usr/local/lib/libopencv_calib3d.so
/usr/local/lib/libopencv_contrib.so /usr/local/lib/libopencv_core.so
/usr/local/lib/libopencv_features2d.so
/usr/local/lib/libopencv_flann.so /usr/local/lib/libopencv_gpu.so
/usr/local/lib/libopencv_highgui.so
/usr/local/lib/libopencv_imgproc.so /usr/local/lib/libopencv_legacy.so
/usr/local/lib/libopencv_ml.so /usr/local/lib/libopencv_nonfree.so
/usr/local/lib/libopencv_objdetect.so
/usr/local/lib/libopencv_photo.so
/usr/local/lib/libopencv_stitching.so /usr/local/lib/libopencv_ts.so
/usr/local/lib/libopencv_video.so
/usr/local/lib/libopencv_videostab.so

Мое значение img всегда равно нулю (NULL). Я не получаю никаких ошибок компиляции. Я проверил похожие посты на форуме, но ни одна из них не смогла решить мою проблему. Я даже пытался с изображением PNG, но столкнулся с той же проблемой. Пожалуйста, сообщите, если кто-то сталкивался с подобной проблемой раньше.
заранее спасибо

0

Решение

Вы пытались указать полный путь к вашему файлу изображения? Если этого не произошло, убедитесь, что файл образа находится в папке с исполняемым файлом (некоторые IDE имеют отдельную папку для отладки и выпуска).

2

Другие решения

Я тоже новичок в OpenCV, но думаю, что здесь<<‘IMG'<<«ЕпсИ; Вы печатаете значение указателя, то есть адрес, сохраненный в «img». Вот пример, который я использую, и он работает:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
Mat image; // new blank image
image = imread("lena.bmp", 0);// reads the image file (I put the image in the same    project's directory).
namedWindow("My Loaded Image", CV_WINDOW_AUTOSIZE );// creates a window for display.
imshow("Display window",image);// shows the image inside it.
waitKey(0);// wait for a keystroke in the window (When you don't do this, the image disappears instantly).
return 0;
}
1

Поскольку вы используете довольно свежую версию OpenCV, я рекомендую вам использовать более новый интерфейс C ++ для функций изображения (cv :: Mat) и чтения.

Ли оператор << даже доступен для IplImage? Я не думаю, что это, вероятно, причина вашей ошибки компиляции.

С новым интерфейсом ваш код будет выглядеть так:

#include <cstdlib>
#include<iostream>
#include <string>
#include <opencv2/highgui/higui.hpp>

using namespace std;
int main( int argc, char** argv )
{
const std::string imageName = "baboon.jpg";
cv::Mat img = cv::imread(image,CV_LOAD_IMAGE_COLOR);
cout<<img<<endl;
return EXIT_SUCCESS;
}
0

Если вы запускаете программу непосредственно из Eclipse, изображение должно находиться в папке с файлом .cpp.

Но если вы запускаете программу из терминала, файл образа должен находиться в той же папке, что и исполняемый файл.

Вы также можете использовать прямой путь для разрешения конфликта.

0
По вопросам рекламы [email protected]