我正在尝试在这里找到的基本教程http://bsd-noobz.com/opencv-guide/40-1-load-and-display-an-image处理加载和显示图像。我在 Visual Studio 2012 中进行操作。
我已将图像文件“lena.png”放在 exe 文件旁边的 Debug 文件夹中。当我尝试从终端执行 exe 文件时,它只会回复“无法加载图像!”。我也在 Release 文件夹中尝试过,结果相同。
这是我的程序代码:
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
if(argc > 1){
cout << argv[1] << endl;
}
Mat img = imread("lena.png", CV_LOAD_IMAGE_COLOR);
if (img.empty())
{
cout << "Cannot load image!" << endl;
return -1;
}
namedWindow("image", CV_WINDOW_AUTOSIZE);
imshow("image", img);
waitKey(0);
return 0;
}
我不明白为什么会发生这种情况,图片与 .exe 位于同一目录中,我正在按照示例代码进行操作。请帮助我理解为什么找不到文件!
编辑:哈哈哈哈哈哈我修好了。由于我正在运行调试版本并且它工作正常,因此我将所有额外的依赖项从 *.lib 更改为 *d.lib,我非常生气。如果我阅读有关如何使用 opencv 的教程,它会说存在差异,但是自从它编译后,我认为它会起作用。我现在将尝试发布版本,看看它是否有效(当然要更改依赖项)。
编辑2:是的,它有效。因此,我自己的问题的答案是,您需要将包含文件夹中的正确 .lib 文件链接为调试和发布版本的依赖项。以“d”结尾的用于调试,其他用于发布。现在我发现问题可能并不那么令人惊讶,但它确实存在。