批量修改图片质量、分辨率(python)

如何用Python的OpenCV批量修改图片质量、分辨率

深度学习在做数据集的时候,大多数情况下是不需要很高分辨率的图片做原数据集的,下面的程序是应用python和opencv的库来实现图片的降质处理。帮助我们批量修改图像的质量和分辨率。本文将介绍如何使用Python的OpenCV库来实现这一功能。

1. 安装OpenCV库

在开始之前,我们需要确保已经安装了Python和OpenCV库。如果尚未安装OpenCV库,可以使用以下命令来进行安装:

pip install opencv-python

2. 导入OpenCV库和其他必要的库

在开始编写代码之前,我们需要导入OpenCV库和其他必要的库:

import cv2
import os

3. 设置输入和输出目录

在开始批量修改图像质量和分辨率之前,我们需要设置输入和输出目录。输入目录是包含待处理图像的文件夹路径,输出目录是保存处理后图像的文件夹路径。我们可以使用os库来创建目录:

input_folder = 'input/'
output_folder = 'output/'

os.makedirs(output_folder, exist_ok=True)

4. 批量修改图像质量和分辨率

现在,我们可以开始批量修改图像质量和分辨率了。我们可以使用cv2.imread()方法读取图像,使用cv2.imwrite()方法保存图像,以及使用cv2.resize()方法修改图像分辨率。以下是一个示例代码:

for filename in os.listdir(input_folder):
    if filename.endswith('.jpg') or filename.endswith('.png'):
        image = cv2.imread(os.path.join(input_folder, filename))
        
        # 修改图像分辨率
        resized_image = cv2.resize(image, (800, 600))

        # 修改图像质量
        jpeg_file = os.path.join(output_folder, filename)
        cv2.imwrite(jpeg_file, resized_image, [int(cv2.IMWRITE_JPEG_QUALITY), 90])

上述代码遍历输入目录中的所有图像文件,判断是否以’.jpg’或’.png’结尾。然后,使用cv2.resize()方法修改图像的分辨率,并使用cv2.imwrite()方法保存图像时,通过调整cv2.IMWRITE_JPEG_QUALITY参数来修改图像的质量。

5. 结束语

通过使用Python的OpenCV库,我们可以轻松地批量修改图像的质量和分辨率。只需设置输入和输出目录并调用相应的函数,就能快速地批量处理图像数据。希望本文对你理解和使用Python的OpenCV库有所帮助。

以下是一个小示例

import cv2
import os
address = r"C:\Users\lenovo\Desktop\paperNeed" # 存放原图片文件夹路径
list = os.listdir(address)
for i, file in enumerate(list):
    firstname = os.path.splitext(file)[0]
    typename = os.path.splitext(file)[1]
    os.rename("{}/{}".format(address, file), "{}/{}.jpg".format(address, i))
    newpath = address + "/"+"{}.jpg".format(i)

    cv2.namedWindow("Image")  # 创建窗口
    img = cv2.imread(newpath)
    cv2.imshow("Image", img)
    changepic = r"C:\Users\lenovo\Desktop\paperNeed2\{}.jpg".format(i) # 修改完质量的图片存放路径
    cv2.imwrite(changepic, img, [int(cv2.IMWRITE_JPEG_QUALITY), 10])

cv2.waitKey(0)
cv2.destroyWindow("Image")  # 关闭窗口

主要的更改质量的代码是:

 cv2.imwrite(changepic, img, [int(cv2.IMWRITE_JPEG_QUALITY), 10])
不同的图片格式所应用的参数也是不一样的

若图片的格式为.jpeg或.jpg格式的 选cv2.CV_IMWRITE_JPEG_QUALITY 参数,其值为0-100(值越大图片质量越高)
若图片的格式为.webp格式的,用cv2.CV_IMWRITE_WEBP_QUALITY参数,值为0-100
若图片格式为.png格式cv2.CV_IMWRITE_PNG_COMPRESSION 参数,值为0-9

猜你喜欢

转载自blog.csdn.net/m0_46114594/article/details/116069109