OpenCV4应用开发:入门、进阶与工程化实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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两个函数进行图像读写的时候,特别需要注意默认的最后一个参数。这些参数可以帮助开发者有效实现各种图像加载与压缩保存需求。