原因:图片路径
//一段简单的OPENCV测试程序
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main() {
// 读入一张图片(游戏原画)
Mat img = imread("1.jpg");
// 创建一个名为 "游戏原画"窗口
namedWindow("游戏原画");
// 在窗口中显示游戏原画
imshow("游戏原画", img);
// 等待6000 ms后窗口自动关闭
waitKey(6000);
}
却出现以下的报错。
可能是imread(“pic.jpg”);的路径问题,把路径打全。而且注意左右斜杠,如果我们将imread(“C:\Users\Administrator\Desktop\图库\a.jpg”)改为imread(“C:\Users\Administrator\Desktop\图库\a.jpg”)或者imread(“C:/Users/Administrator/Desktop/图库/a.jpg”)问题就解决了。
最后查了一下资料是这样解释的:
在C里面,输出字符串时,如果想输出一个换行,那就要加上’\n’这个标志,类似的,输出一个TAB,就加上’\t’,也就是说,反斜杠("")这个符号会把跟在它后面的字符结合起来转义成其它字符。根据这个原理,如果想输出双引号(’"’),就需要输入’"’,这样才会将包含了双引号的字符串正确的写入内存中。那么如果想输入一个反斜杠呢?很简单,只要敲’\'就可以了。
如果"C:\Windows\System"这个路径字符串交给C编译器编译,实际写入内存的字符串并没有包含反斜杠"",甚至紧跟在反斜杠后面的字母也一起被转义成了其它的字符,再次调用的话势必会出问题。
//修改代码如下
int main() {
// 读入一张图片(游戏原画),路径设置为绝对路径
Mat img = imread("G:/Workspace/VisualStudioWorkspace/TestOpencv/testopencv/1.jpg");
//绝对路径也可以如下设置
//Mat img = imread("G:\\Workspace\\VisualStudioWorkspace\\TestOpencv\\testopencv\\1.jpg");
// 创建一个名为 "游戏原画"窗口
namedWindow("游戏原画");
// 在窗口中显示游戏原画
imshow("游戏原画", img);
// 等待6000 ms后窗口自动关闭
waitKey(6000);
//cout << "heloo" << endl;
}