Ошибка в OpenCV 2.4.2 "Ошибка OpenCV: неправильный флаг"

Я только начал пытаться играть с OpenCV, и я написал небольшую программу из книги, которая довольно проста. Проблема в том, когда я пытаюсь скомпилировать его, я получаю эту ошибку. Я дам вам всю информацию, которую у меня есть. Я установил openCV с помощью homebrew для Mac OS X 10.7.

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

int main(int argc, char *argv[])
{
cv::Mat image = cv::imread("usf.gif");
cv::namedWindow("My Image");
cv::imshow("My Image", image);
cv::waitKey(5000);

return 1;
}

Мне понравилось:

g++ -o test opencvtest.cc -lopencv_core -lopencv_imgproc -lopencv_calib3d -lopencv_video -lopencv_features2d -lopencv_ml -lopencv_highgui -lopencv_objdetect -lopencv_contrib -lopencv_legacy

И это то, что я получил, когда пытался его запустить.

OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat, file /tmp/homebrew-opencv-2.4.2-oQmu/OpenCV-2.4.2/modules/core/src/array.cpp, line 2482
terminate called throwing an exceptionAbort trap: 6

Еще раз спасибо.

Ответы

Ответ 1

Это потому, что OpenCV не поддерживает gif:

Функция imread загружает изображение из указанного файла и возвращает его. Если изображение невозможно прочитать (из-за отсутствия файла, неправильных разрешений, неподдерживаемого или недопустимого формата), функция возвращает пустую матрицу (Mat:: data == NULL). В настоящее время поддерживаются следующие форматы файлов:

Растровые изображения Windows - *.bmp, *.dib(всегда поддерживается)

Файлы JPEG - *.jpeg, *.jpg, *.jpe(см. Примечание2)

Файлы JPEG 2000 - *.jp2 (см. Примечание2)

Portable Network Graphics - *.png(см. Примечание2)

Формат переносимого изображения - *.pbm, *.pgm, *.ppm(всегда поддерживается)

Растения солнца - *.sr, *.ras(всегда поддерживается)

Файлы TIFF - *.tiff, *.tif(см. Примечание2)

См. docs.

Ответ 2

Я думаю, что "gifs" не поддерживаются