首先读取图片;
然后处理,得到cv:Mat类型;
对cv:Mat类型图片写入文件夹,保存到指定路径。
像raw图等不能直接读取显示,需要先进行解码,转换为可以显示的图片。
下面举例读入本来可以显示的图。以下代码加入对应的头文件和命名空间,放到主函数运行即可。
- string readpath="D:\\processimages\\1.jpg";//s输入为jpg格式,可以换成其他格式
- string savepath="D:\\processimages\\1.bmp";//保存为bmp格式,可以换成其他格式
- Mat src=imread(readpath);
- //对输入图像进行处理,假设有一个函数为对图像进行白平衡校正:Mat awbimg(Mat src),可以换成自己的函数
- Mat dst=awbimg(src);
- //对处理后的图像保存到指定路径,
- imwrite(savepath,dst);
以上运行后,可以去到指定路径中查看是否多出处理后的图片。
如果是文件夹下多张图片处理,修改格式,再以同样的文件名保存,如下:
如何读取文件夹下多张图片进行处理可以参考:http://t.csdn.cn/xWyOI
接下来是读取了多张图片进行处理后,得到的多张Mat指定格式保存到指定路径中:
- //filesVec为一个string的容器,关于它的定义和读取看上面的参考链接
- for(int i = 0; i < filesVec.size(); i++)
- {
- //首先读取
- Mat src=imread(filesVec[i]);
- //自行处理图片
- //保存到文件夹中,自定义指定路径和文件名,假设filesVec.size()=3
- string savepath[3] = {"D:\\01.bmp","D:\\02.bmp","D:\\03.bmp"};
- imwrite(savepath[i], src);
-
- //需要与读取的文件名一样时,文件格式后缀一般是三到四个字符,进行替换即可
- //string.substr()相当于截取或者删除字符,可以搜索它的定义,这里不展开
- string savepath1 = filesVec[i].substr(0, filesVec[i].length() - 4) + ".bmp";
- imwrite(rgbsavepath, src);
- }
运行后可到文件夹查看,处理后的Mat图片的属性格式是否和代码中的对应。

Thank you for your reading!