所以我链接了OpenCV的所有库,我添加了所有.lib和.dll才能使其正常工作,但是当我尝试尝试显示图片时,它说该图片不存在。所有路径都是正确的,图像在解决方案的主目录中,这里是代码。
Mat color = imread("wall.jpg");
也尝试过:
D:\\wall.jpg
和D:\wall.jpg
D:/wall.jpg
和D://wall.jpg
#include<opencv2/opencv.hpp>
#include<opencv2/imgcodecs.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat color = imread("wall.jpg");
if (color.empty())
{
cout << "image is empty" << endl;
system("pause");
exit(-1);
}
else
{
cout << "image is displayed" << endl;
imshow("window", color);
}
waitKey();
}
代码输出
image is empty Press any key to continue . . .
它应该说
image displayed
答案 0 :(得分:0)
我的回答假设您正在使用Windows,因为您在说明中使用了解决方案一词。
以下至少一项是正确的:
"wall.jpg"
之类的相对路径将使用工作目录,该目录不一定是解决方案目录。
start D:\wall.jpg
。如果该命令返回文件未找到错误,则说明您的路径错误。来自imread docs:
从文件加载图像。
函数
imread
从指定的文件加载图像并返回它。如果无法读取图像(由于缺少文件,权限不正确,格式不受支持或格式无效),该函数将返回一个空矩阵(Mat::data==NULL
。...
在Microsoft Windows * OS和MacOSX *上,默认使用OpenCV映像附带的编解码器(libjpeg,libpng,libtiff和libjasper)。因此,OpenCV始终可以读取JPEG,PNG和TIFF。
...
注意
- 该功能通过内容而不是文件扩展名确定图像的类型。
如果从命令行运行,则工作目录就是您所在的目录。如果在操作系统上运行文件列表命令,并且可以看到"wall.jpg"
映像,那么您的位置正确。从此处使用.\path\to\my\opencv-program.exe
之类的相对路径从此处运行OpenCV可执行文件。