在 OpenCv 中使用“cv::imread”函数读取图像的问题

Posted

技术标签:

【中文标题】在 OpenCv 中使用“cv::imread”函数读取图像的问题【英文标题】:Issue with reading an image using "cv::imread" function in OpenCv 【发布时间】:2010-04-06 11:03:18 【问题描述】:

我遇到了一些基本 OpenCV 代码的问题。 这是我的代码:

 cv::Mat src;
 src=imread("Calibration.bmp",0);

 if (src.empty())
  cout << "Cannot load image" << " ";
 else
  cout << src.cols << " " << src.rows << " ";

不幸的是 cv::imread 使用任何类型的输入图像返回 NULL 矩阵(我尝试过 .bmp、.jpg)。文件名似乎工作正常(程序不会以错误结束),因为使用错误的文件名会生成错误消息。 我曾尝试使用旧式“CvLoadImage”,但结果相同。 有谁知道如何解决这个问题?

【问题讨论】:

【参考方案1】:

好的,我解决了这个问题... 当您混合发布和调试 OpenCV 库时会出现问题。 我已经更改了项目属性中的路径和库名称,并且“cv::imread”工作得很好。

【讨论】:

在您的 OpenCV\lib 目录中,您应该找到两种类型的 .lib 文件(例如:cv210.lib 和 cv210d.lib)。如果您在调试模式下构建解决方案,在项目属性中您应该链接到 cv210d.lib,如果您在发布模式下构建解决方案,您应该链接到 cv210.lib。同样的事情对应于 OpenCV/bin 目录中的 dll 文件。我希望它会有所帮助,很抱歉有一段时间没有回复:/ 确实如此,但为什么会这样呢?因为即使混合库,其他功能也能完美运行。为什么有这个功能? ***.com/q/9125817/744859 刚刚让我免于很多头痛。谢谢。 也让我省了很多麻烦。为你 +1 @Marcin 非常好!我只是建议您将评论(带有详细信息)放在答案中。【参考方案2】:

我在尝试加载 ARGB 位图图像(我尝试使用颜色加载)时遇到了这种情况。将位图转换为 RGB (24bpp) 解决了这个问题。

【讨论】:

以上是关于在 OpenCv 中使用“cv::imread”函数读取图像的问题的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV:用 cv::imread 替换 ilLoadImage

opencv中 cv2.imread 路径问题

OpenCV“对'cv :: imread'等C ++的未定义引用

Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()

opencv cv2.imread()报错: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor‘

opencv cv2.imread() cv2模块