python resize处理PNG图像缩放 多种参数随机处理 1080 --> 540 --> 1080

python resize处理PNG图像缩放 多种参数随机处理 一个文件夹下有许多子文件夹 子文件夹下为PNG图像

import os
import cv2
import sys
import random
input_folder = “/disk2/sunyingli/Hello树先生/1王宝强大显神通1080_10s_5_png” # 输入文件夹路径
output_folder = “/disk2/sunyingli/Hello树先生/1王宝强大显神通1080_10s_5_png_540_1080” # 输出文件夹路径

def resize_images(input_folder, output_folder):
# 遍历文件夹和子文件夹
count = 0
for root, dirs, files in os.walk(input_folder):
random_number = random.randint(1, 5)
if len(files) != 0:
count +=1
print(count, random_number)
for file_name in files:
# 检查文件扩展名
count +=1
if file_name.endswith((‘.jpg’, ‘.jpeg’, ‘.png’)):
input_path = os.path.join(root, file_name) # 输入文件路径
# output_folder_0 = output_folder + “/” + root[-4:]
output_folder_0 = output_folder
output_folder_1 = output_folder_0 + “/” + file_name
# 创建输出文件夹
if not os.path.exists(output_folder_0):
os.makedirs(output_folder_0)
img = cv2.imread(input_path)
width = int(img.shape[1]*0.5)
height = int(img.shape[0]*0.5)
if img.shape[1]%2 != 0 or img.shape[0]%2 != 0:
print(width,height)
sys.exit(“宽度或高度为奇数,程序终止”)
# 调用FFmpeg进行图像缩放
# 缩放图像
# # 保存缩放后的图像
random_number = random.randint(1, 5)
print(count, random_number)
if random_number == 1:
# cv2.INTER_NEAREST:最近邻插值法,使用最近的像素值进行插值。
resized_img = cv2.resize(img, (width, height), interpolation=cv2.INTER_NEAREST)
elif random_number == 2:
# cv2.INTER_LINEAR:双线性插值法,使用附近的4个像素值进行插值计算。
resized_img = cv2.resize(img, (width, height), interpolation=cv2.INTER_NEAREST)
elif random_number == 3:
# cv2.INTER_AREA:区域插值法,适用于缩小图像。
resized_img = cv2.resize(img, (width, height), interpolation=cv2.INTER_AREA)
elif random_number == 4:
# cv2.INTER_CUBIC:双立方插值法,使用16个最近的像素值进行插值计算。
resized_img = cv2.resize(img, (width, height), interpolation=cv2.INTER_CUBIC)
else:
# cv2.INTER_LANCZOS4:Lanczos插值法,使用8个最近的像素值进行插值计算。
resized_img = cv2.resize(img, (width, height), interpolation=cv2.INTER_LANCZOS4)

            random_number = random.randint(1, 5)
            print(count, random_number)
            width = int(img.shape[1])
            height = int(img.shape[0])
            
            if random_number == 1:
                # cv2.INTER_NEAREST:最近邻插值法,使用最近的像素值进行插值。
                resized_img_1 = cv2.resize(resized_img, (width, height), interpolation=cv2.INTER_NEAREST)
            elif random_number == 2:
                # cv2.INTER_LINEAR:双线性插值法,使用附近的4个像素值进行插值计算。
                resized_img_1 = cv2.resize(resized_img, (width, height), interpolation=cv2.INTER_NEAREST)
            elif random_number == 3:
                # cv2.INTER_AREA:区域插值法,适用于缩小图像。
                resized_img_1 = cv2.resize(resized_img, (width, height), interpolation=cv2.INTER_AREA)
            elif random_number == 4:
                # cv2.INTER_CUBIC:双立方插值法,使用16个最近的像素值进行插值计算。
                resized_img_1 = cv2.resize(resized_img, (width, height), interpolation=cv2.INTER_CUBIC)
            else:
                # cv2.INTER_LANCZOS4:Lanczos插值法,使用8个最近的像素值进行插值计算。
                resized_img_1 = cv2.resize(resized_img, (width, height), interpolation=cv2.INTER_LANCZOS4)
            
            
            cv2.imwrite(output_folder_1, resized_img_1)

调用示例

resize_images(input_folder, output_folder)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值