opencv实现图片批量压缩

#制作数据集时,对高分辨率的图片进行压缩#

​
import cv2
import os

def compress_folder(folder):
    for filename in os.listdir(images_folder):
        if filename.endswith('.jpg') or filename.endswith('.jpeg') or filename.endswith('.png'):
            img_path = os.path.join(images_folder, filename)
            img = cv2.imread(img_path)
            new_path = os.path.join(images_folder, "compressed_" + filename)
            cv2.imwrite(new_path, img, [int(cv2.IMWRITE_JPEG_QUALITY), 50])
            print(f"Compressed {img_path} to {new_path}")

compress_folder(r"文件夹路径")

​

遍历读取文件夹中的图片

for filename in os.listdir(images_folder):
#循环读取文件夹中的文件名称
   if filename.endswith('.jpg') or filename.endswith('.jpeg') or filename.endswith('.png'):
   #识别文件夹中的图片文件
            img_path = os.path.join(images_folder, filename)
            #使用os函数对文件夹路径以及图片文件的名称进行拼接
            img = cv2.imread(img_path)
            #生成的图片路径进行读取
new_path = os.path.join(images_folder, "compressed_" + filename)
#对要压缩的图片进行重命名,依然是os函数进行拼接

压缩图片

cv2.imwrite(new_path, img, [int(cv2.IMWRITE_JPEG_QUALITY), 50])
#保存图片,设置保存图片的JPEG质量为五十

JPEG质量在0到100之间,这里的50可以改变,0为最低质量,100为最高质量(无损压缩)自己使用的是50,也就是刚好一半,结果图如下

可以看到结果大致为原来的十分之一,使用100质量时的压缩大小大致为原本的二分之一

运行程序,压缩后的图片会保存在原来的文件夹中,同时原先的图片会保留下来

以下为保存在另一个文件夹中的代码,原理相同

import cv2
import os

def compress_folder(images_folder,new_folder):
    for filename in os.listdir(images_folder):
        if filename.endswith('.jpg') or filename.endswith('.jpeg') or filename.endswith('.png'):
            img_path = os.path.join(images_folder, filename)
            img = cv2.imread(img_path)
            new_path = os.path.join(new_folder, "compressed_" + filename)
            cv2.imwrite(new_path, img, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
            print(f"Compressed {img_path} to {new_path}")
images_folder = r'读取路径'
new_folder = r'保存路径'
compress_folder(images_folder,new_folder)

如果感觉有用就点个赞吧,谢谢友友们

猜你喜欢

转载自blog.csdn.net/weixin_74258524/article/details/134629002