如何用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