用于 IplImage 的 cvLoadImage 工作,但用于 cv::Mat 的 cv::imread 不工作

Posted

技术标签:

【中文标题】用于 IplImage 的 cvLoadImage 工作,但用于 cv::Mat 的 cv::imread 不工作【英文标题】:cvLoadImage for IplImage working, but cv::imread for cv::Mat not workign 【发布时间】:2013-08-13 04:48:23 【问题描述】:

我遇到了一个奇怪的问题,我无法使用cv::imread 从文件系统中读取基本图像文件。因此,下面的结果导致 imageInput 具有空数据,行和列设置为 0。

cv::Mat imageInput =  cv::Mat();
imageInput = cv::imread("abc.jpg",cv::IMREAD_COLOR);

有趣的是,注释掉上面的代码后,下面的代码就可以读取iamge了:

//cv::Mat imageInput =  cv::Mat();
//imageInput = cv::imread("abc.jpg",cv::IMREAD_COLOR);
IplImage *rImg;
rImg = cvLoadImage("abc.jpg", CV_LOAD_IMAGE_COLOR);

rImg 的宽度为 3296,高度为 2256,如预期的那样。 我不知道这怎么可能。请帮忙。 在这两种情况下,构建似乎都很好。我尝试同时使用 opencv-2.4.5 和 opencv-2.4.6

【问题讨论】:

【参考方案1】:

我现在已经能够找出问题所在了。 问题是提到了发布构建静态库而不是调试构建静态库。 之前的 VC++ 项目,我在调试模式下包含了以下 lib 依赖项:opencv_core245.lib;opencv_highgui245.lib;opencv_imgproc245.lib;opencv_video245.lib

将其更改为opencv_core245d.lib;opencv_highgui245d.lib;opencv_imgproc245d.lib;opencv_video245d.lib 后,我可以使用 imread 读取图像而不会出现任何问题。

【讨论】:

以上是关于用于 IplImage 的 cvLoadImage 工作,但用于 cv::Mat 的 cv::imread 不工作的主要内容,如果未能解决你的问题,请参考以下文章

cvLoadImage

处理实时数据,绕过 CvloadImage

Mat转IplImage IplImage转Mat

OPENCV 错误:未定义对“cvLoadImage”的引用

openCV1.0 cvLoadImage显示图像

Mat转化为IplImage类型和CvMat类型