1.5 图像加载与保存
本节将重新审视OpenCV中的图像加载函数imread,同时学习如何通过imwrite函数保存图像。
1.5.1 加载图像
OpenCV使用imread函数实现图像的加载,该函数支持灰度图像、彩色图像、原始图像的加载。在默认情况下,通过imread加载的图像都是三通道BGR彩色图像。实际上,OpenCV支持加载灰度图像与带有透明通道的图像。imread函数原型如下所示:
在不修改第二个参数flags默认值的情况下,经常像如下这样使用该函数:
如果需要把图像以灰度图像的形式进行加载,则可以进行以下设置:
如果需要把具有透明通道的图像加载进来但不做任何改变,则可以进行以下设置:
1.5.2 保存图像
一般情况下,通过imwrite函数保存图像只需设置保存文件路径与Mat对象两个参数,但是实际上该函数还有第三个默认参数可以设置。第三个参数主要用于调整保存图像的压缩质量、位图深度和通道数目。如果需要修改默认保存的三通道彩色图像,开发者就要使用第3个参数对要保存的图像进行有针对性的写入图像文件操作。首先需要重新认识一下imwrite函数:
参数解释如下。
❑filename:表示保存文件的路径与名称,必须带图像文件扩展名。
❑img:内存中的Mat对象。
❑params:保存图像文件时需要优化的参数,默认为空。
对第3个参数params来说,当以不同的格式保存图像时,params参数的内容也是不一样的。
1)如果保存图像的格式为PNG,则调整压缩质量的参数为IMWRITE_PNG_COMPR-ESSION。该参数等级取值范围为0~9,默认值为1。值越大,压缩时间越长,图像大小越小。
2)如果保存图像的格式为JPG,则调整压缩质量的参数为IMWRITE_JPEG_QUALITY:等级取值范围为0~100,默认值为95。值越大,图像质量越高,图像大小也越大。
常见的不同通道与格式的图像保存代码如下。
1)保存为单通道灰度图像:
2)保存为默认的彩色BGR图像:
3)保存为PNG彩色压缩图像:
4)保存为JPG高压缩比图像:
5)保存为PNG格式,且带透明通道:
注意:使用imread与imwrite两个函数进行图像读写的时候,特别需要注意默认的最后一个参数。这些参数可以帮助开发者有效实现各种图像加载与压缩保存需求。