注意不是所有格式的Mat型数据都能被使用保存为图片,目前OpenCV主要只支持单通道和3通道的图像,并且此时要求其深度为8bit和16bit无符号(即CV_16U)
保存PNG格式的时候可以保存透明通道的图片
可以指定压缩参数
如果Mat类型数据的深度和通道数不满足上面的要求,则需要使用convertTo()函数和cvtColor()函数来进行转换。convertTo()函数负责转换数据类型不同的Mat,即可以将类似float型的Mat转换到imwrite()函数能够接受的类型。而cvtColor()函数是负责转换不同通道的Mat,因为该函数的第4个参数就可以设置目的Mat数据的通道数(只是我们一般没有用到它,一般情况下这个函数是用来进行色彩空间转换的)。另外也可以不用imwrite()函数来存图片数据,可以直接用通用的XML IO接口函数将数据存在XML或者YXML中
//IDE:VS2019 #include<opencv2/opencv.hpp> #include<iostream> int main(int argc, char** argv) { cv::Mat img = cv::imread("D:/bb/tu/sansui.jpg"); cv::imwrite("D:/bb/tu/test.jpg", img); cv::waitKey(); return 0; }