借助于PIL库实现对原始图像的压缩,而不改变原图像的尺寸(原尺寸不变,只改变图像水平像素和垂直像素),效果图如下所示:

1.实现对单张图片的压缩(元图像尺寸宽高不变,水平垂直像素减少,减少单张图片存储)
import cv2
from PIL import Image as ImagePIL
from PIL import Image
import os
im = cv2.imread('./picture/6260.jpg')
image = Image.fromarray(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))
image.save('2.jpg', quality=10, dpi=(24.0, 24.0))
2.实现对批量图片的压缩,并且压缩后图像的命名与原图像的名称一一对应(元图像尺寸宽高不变,水平垂直像素减少,减少单张图片存储)
import cv2
from PIL import Image as ImagePIL
from PIL import Image
import os
def convert(input_dir, output_dir):
for filename in os.listdir(input_dir):
path = input_dir + "/" + filename
print("doing... ", path)
ori_img = cv2.imread(path)
image = Image.fromarray(cv2.cvtColor(ori_img, cv2.COLOR_BGR2RGB))
image.save(output_dir+'/'+filename, quality=10, dpi=(24.0, 24.0))
if __name__ == '__main__':
input_dir = "F:\\LYD_total_picture\\zhoucheng_new\\JPEGImages"
output_dir = "F:\\LYD_total_picture\\zhoucheng_new\\JPEG"
convert(input_dir, output_dir)