我正在尝试在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对同一图像文件没有任何问题.我尝试了很多不同的东西而没有成功.
我感谢任何帮助.
康拉德
正如我刚评论的那样,imread也不适合我.一个小小的谷歌搜索显示其他人有同样的问题; 我想这是库代码中的一个错误.现在,这是一个hacky解决方法:
IplImage* img = cvLoadImage("lena.jpg");
cv::Mat lena(img);
cvReleaseImage(&img);
Run Code Online (Sandbox Code Playgroud)
这样,您至少可以使用C++ API来完成剩下的工作.
这个问题有帮助.
解决方案是,链接器中通常提出的opencv库文件无法正常工作.而是尝试使用调试库文件:
在Visual C++中:
转到项目 - >属性(或Alt-F7)配置属性 - >链接器 - >输入 - >附加依赖项
用"cv210d.lib cxcore210d.lib highgui210d.lib"替换通常的"cv210.lib cxcore210.lib highgui210.lib" - 这是调试库.
OpenCv 2.0 API命令现在可以正常工作.