首先读取图片;
然后处理,得到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!