用于 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 不工作的主要内容,如果未能解决你的问题,请参考以下文章