OPENCV 无法在调试模式下打开我的图像
Posted
技术标签:
【中文标题】OPENCV 无法在调试模式下打开我的图像【英文标题】:OPENCV cannot open my image in debug mode 【发布时间】:2013-07-11 17:27:49 【问题描述】:我在VC2010中使用opencv,对它比较熟悉。
我今天安装了 OPENCV 2.4.5 并尝试显示图像以测试我的 opencv 是否工作。
这段代码在发布模式下显示图像真是太神奇了,但是当我将编译器模式更改为调试时,opencv 找不到图像并为图像数据返回 null !!!
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
int main()
cv::RNG rng;
cv::Mat image = cv::imread("1.jpg",-1);
cv::imshow("Image",image);
cv::waitKey(0);
return 0;
错误显示为:
OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupport
ed array type) in unknown function, file ..\..\..\src\opencv\modules\core\src\ar
ray.cpp, line 2482
我确定在发布模式下代码可以正常工作,所以路径、图像名称和一切都很好,但我不知道为什么它在调试模式下不工作。
我也提供了绝对路径作为输入,但它也不起作用!但是绝对路径再次在发布模式下工作!
值得一提的是,我还在 32 位和 64 位的 opencv 库上测试了我的项目,问题没有改变!!
【问题讨论】:
如果调试可执行文件构建在与发布可执行文件不同的位置,则需要将映像文件复制到调试版本的目录中。要么,要么将绝对路径传递给imread
。
@Aurelius 我测试了绝对路径,但也没有用...
【参考方案1】:
您的 opencv 库的调试版本可能是在不支持“jpg”图像的情况下编译的。另见this answer
确保在链接库时没有混淆 OpenCV 的发布和调试 lib。调试库以 d 结尾。此外,请确保您使用的是基于您拥有的 opencv 版本的正确库名称,例如 opencv_calib3d245d.lib
【讨论】:
你的意思是调试版本?因为我对发布版本没有问题 我知道调试和发布库在 d 中不同,但在“链接器”设置中添加“C:\opencv\build\x64\vc10\lib*.lib”是我的错,这使得 VC2010使用此文件夹中可用的所有库,我认为这导致了问题!不过还是谢谢以上是关于OPENCV 无法在调试模式下打开我的图像的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 2017 上无法使用调试模式 x64 进行 opencv3.2 编译