使用imshow的OpenCV 2.0 C++ API:返回未处理的异常和"bad-flag"

Kon*_*rad 6 opencv visual-c++

我正在尝试在MS Visual C++ 2008中使用新的OpenCV 2.0 API并编写了这个简单的程序:

cv::Mat img1 = cv::imread("image.jpg",1);
cv::namedWindow("My Window", CV_WINDOW_AUTOSIZE);
cv::imshow("My Window", img1);
Run Code Online (Sandbox Code Playgroud)

Visual Studio返回未处理的异常,控制台返回:

OpenCV Error: bad flag (parameter or structure field) 
(Unrecognized or unsupported array type) in unknown function, 
file ..\..\..\..\ocv\opencv\src\cxcore\cxarray.cpp, line 2376
Run Code Online (Sandbox Code Playgroud)

图像不显示.此外,窗口"我的窗口"有一个奇怪的标题:"我的窗口",这不依赖于名称.

使用cvLoadImage,cvNamedWindow或cvShowImage等命令的"旧"C API对同一图像文件没有任何问题.我尝试了很多不同的东西而没有成功.

我感谢任何帮助.

康拉德

tza*_*man 6

正如我刚评论的那样,imread也不适合我.一个小小的谷歌搜索显示其他人有同样的问题; 我想这是库代码中的一个错误.现在,这是一个hacky解决方法:

IplImage* img = cvLoadImage("lena.jpg");
cv::Mat lena(img);
cvReleaseImage(&img);
Run Code Online (Sandbox Code Playgroud)

这样,您至少可以使用C++ API来完成剩下的工作.


Kon*_*rad 6

这个问题有帮助.

解决方案是,链接器中通常提出的opencv库文件无法正常工作.而是尝试使用调试库文件:

在Visual C++中:

转到项目 - >属性(或Alt-F7)配置属性 - >链接器 - >输入 - >附加依赖项

用"cv210d.lib cxcore210d.lib highgui210d.lib"替换通常的"cv210.lib cxcore210.lib highgui210.lib" - 这是调试库.

OpenCv 2.0 API命令现在可以正常工作.