2012-07-15 117 views
5

我刚开始尝试玩OpenCV,并从一本很简单的书中写了一个小程序。问题是当我试图编译它时,我得到这个错误。我会给你我所有的信息。我使用Mac OS X 10.7的自制软件安装了openCV。OpenCV 2.4.2中的错误“OpenCV Error:Bad flag”

#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

试装车像JPG或PNG任何其他图像,并检查是否同样的错误来。 – 2012-07-15 17:43:00

+0

完美的工作。但我会留下这个问题,希望有人能回答为什么它不适用于GIF。知识就是力量。 – Red 2012-07-15 17:49:33

+0

您可以阅读'imread'函数的文档以了解支持的格式。 – 2012-07-15 17:50:37

回答

9

这是因为OpenCV的不支持GIF

The function imread loads an image from the specified file and returns it. If the image can not be read (because of missing file, improper permissions, unsupported or invalid format), the function returns empty matrix (Mat::data==NULL).Currently, the following file formats are supported:

Windows bitmaps - *.bmp, *.dib (always supported)

JPEG files - *.jpeg, *.jpg, *.jpe (see Note2)

JPEG 2000 files - *.jp2 (see Note2)

Portable Network Graphics - *.png (see Note2)

Portable image format - *.pbm, *.pgm, *.ppm (always supported)

Sun rasters - *.sr, *.ras (always supported)

TIFF files - *.tiff, *.tif (see Note2)

docs

2

我认为“的GIF”不支持