📜  cv2.imwrite 路径 - Python (1)

📅  最后修改于: 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数组保存为各种图像格式。我们可以通过指定压缩质量、压缩级别和元数据等参数来控制保存的方式。