大多数人的第一个OpenCV的程序就是读取图像并显示,代码如下:
#include "opencv2/opencv.hpp"
int main()
{
cv::Mat imagesrc = cv::imread("lena.png");//读取图像
cv::namedWindow("openCV");//创建窗口
cv::imshow("openCV", imagesrc);//显示图像
cv::waitKey();
cv::imwrite("lena.bmp", imagesrc);//保存图像
return 1;
}
上面那个例子需要将图像文件lena.png放在工程文件中。运行没有问题,能正确显示结果。但是很多情况下我们需要从特定的路径去读取文件,例如一般会采用完整路径读取文件。将第一行代码改为:
cv::Mat imagesrc = cv::imread("D:\test\lena.png");
运行报错:
然后改第一行代码为:
cv::Mat imagesrc = cv::imread("D:\\test\\lena.png");
运行正确。
分析原因:imread加载完整路径的格式是双斜杠,这与库自己的定义有关,就像halcon的完整路径是单反斜杠,大家注意下就OK了。
同样可以将第五行代码改为:
cv::Mat imagesrc = cv::imread("D:\\test123\\lena.bmp");
即可把图像保存在指定路径。