📅  最后修改于: 2023-12-03 15:00:11.078000             🧑  作者: Mango
在使用OpenCV进行图像处理时,我们可以使用 cv2.imread()
读取一幅图像并将其转换为NumPy数组。同样,我们也可以使用 cv2.imwrite()
将NumPy数组保存为一个图像文件。
本文将介绍 cv2.imwrite()
函数的用法,包括保存图像的路径、图像质量和格式等参数。
cv2.imwrite(filename,img,[params])
filename
:要保存的文件名,必须包含文件格式后缀。img
:要保存的图像数组。params
:可选参数,图像保存的参数。如JPEG图像的压缩质量等。下面是一个简单的示例,说明如何使用 cv2.imwrite()
将一幅图像保存为JPG格式文件。
import cv2
# 读取图像
img = cv2.imread('example.jpg')
# 将图像保存为JPG格式文件
cv2.imwrite('example.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 90])
在上面的代码中,我们首先使用 cv2.imread()
函数读取一个名为 example.jpg
的图像文件,并将其转换为NumPy数组。然后,我们使用 cv2.imwrite()
函数将该图像保存为JPG格式文件,并将压缩质量设置为90。
除了文件名和图像数组之外,我们还可以使用以下可选参数来控制图像保存的方式。
cv2.IMWRITE_JPEG_QUALITY
:JPEG图像的压缩质量,取值范围从0到100;默认值为95。cv2.IMWRITE_PNG_COMPRESSION
:PNG图像的压缩级别,取值范围从0到9;默认值为3。例如,下面的代码将图像保存为质量为80的JPEG格式文件。
cv2.imwrite('example.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 80])
默认情况下,cv2.imwrite()
函数将保存图像为其原始格式,文件格式由文件名的后缀确定。如果要将图像保存为另一种格式,可以使用以下参数。
cv2.IMWRITE_JPEG_PROGRESSIVE
:用于设置JPEG图像是否为渐进式扫描;默认值为False。cv2.IMWRITE_JPEG_OPTIMIZE
:用于启用JPEG图像的优化;默认值为False。cv2.IMWRITE_JPEG_RST_INTERVAL
:用于设置JPEG图像的重置间隔;默认值为0。cv2.IMWRITE_JPEG_LUMA_QUALITY
:用于设置JPEG图像亮度通道的压缩质量;默认值为0。cv2.IMWRITE_JPEG_CHROMA_QUALITY
:用于设置JPEG图像色度通道的压缩质量;默认值为0。cv2.IMWRITE_PNG_STRATEGY
:用于设置PNG图像的压缩策略;默认值为cv2.IMWRITE_PNG_STRATEGY_RLE。例如,下面的代码将图像保存为压缩级别为5的PNG格式文件。
cv2.imwrite('example.png', img, [cv2.IMWRITE_PNG_COMPRESSION, 5])
当保存图像时,我们可以将元数据信息保存到文件中。以下参数可以控制哪些元数据将保存。
cv2.IMWRITE_JPEG_EXIF_TITLER
:用于设置JPEG图像的标题(Exif数据)。cv2.IMWRITE_JPEG_EXIF_DESCRIPTION
:用于设置JPEG图像的说明(Exif数据)。cv2.IMWRITE_JPEG_EXIF_CREATOR
:用于设置JPEG图像的作者(Exif数据)。cv2.IMWRITE_JPEG_EXIF_COPYRIGHT
:用于设置JPEG图像的版权信息(Exif数据)。cv2.IMWRITE_PNG_BILEVEL
:用于保存PNG图像的双色色彩图(1位)。例如,下面的代码将图像保存为带有标题和说明的JPEG格式文件。
cv2.imwrite('example.jpg', img,
[cv2.IMWRITE_JPEG_QUALITY, 90,
cv2.IMWRITE_JPEG_EXIF_TITLER, 'Title',
cv2.IMWRITE_JPEG_EXIF_DESCRIPTION, 'Description'])
cv2.imwrite()
函数是一个非常有用的函数,可以将OpenCV数组保存为各种图像格式。我们可以通过指定压缩质量、压缩级别和元数据等参数来控制保存的方式。