imread() 仍然返回空垫子,尽管在 openCV 4.0.0 中寻址正确

imread() still returns empty mat despite correct addressing in openCV 4.0.0

本文关键字:openCV 寻址 返回 imread      更新时间:2023-10-16

我是OPENCV的新手。 现在我正在尝试使用 imread(( 显示图像,但 imread(( 不起作用(继续返回空垫子(。但是当我尝试通过 imread(( 绘制线条、圆圈等时,它运行良好。

所以我认为解决会有问题。我尽我所能,但仍然不起作用。 而且我也用谷歌搜索了很多东西来解决它,但我无法得到这个问题的答案。

我该怎么办?我错过了什么问题吗?

我目前使用 Windows 10、Visual Studio 2017 和 openCV 4.0.0 alpha。

这是我的代码。

#include <iostream>
#include <opencv2/opencv.hpp>
#ifdef _DEBUG
#pragma comment(lib,"opencv_world400d.lib")
#else
#pragma comment(lib,"opencv_world400.lib")
#endif
using namespace std;
using namespace cv;
int main()
{
Mat image;
image =imread("C:/Users/ymin/source/repos/Project1/Project1/BENZ.bmp",IMREAD_ANYCOLOR);
if (image.empty()) 
{std::cerr << "Could not open file" << std::endl; return (1);}
imshow("image", image);
waitKey();
return 0;
}

来自 OpenCV 文档的imread

如果无法读取图像(由于缺少文件、权限不正确、格式不受支持或无效(,该函数将返回一个空矩阵。

这表明该文件不存在(可能是错别字?(,您没有读取它的权限,它的格式无法被OpenCV识别,或者它已损坏。

确保文件位于您认为的位置,并且可读,并且 OpenCV 经过编译以支持文件的任何格式。

(请注意,文件扩展名不能决定其格式,您可以获取 JPEG 文件并将其重命名为具有.bmp扩展名,但它仍然是 JPEG 文件。