Embedded_game/chepai/合成图片.py

69 lines
2.7 KiB
Python
Raw Normal View History

2025-01-02 12:48:11 +08:00
# -*- coding:utf-8 -*-
# @Author len
# @Create 2023/11/5 16:01
import os
import random
from PIL import Image
# 从图片中提取的颜色代码
color_codes = [
"#FFFFCC", "#CFFFFF", "#FFCCCC",
"#99CCCC", "#FFCC99", "#FFCCCC",
"#F99999", "#996699", "#FFCCCC",
"#CC9999", "#FFFFCC", "#CCCC99",
"#FFCCCC", "#FFFF99", "#CCCCFF",
"#0899CC", "#CCCCCC", "#FF6666"
]
def add_image_to_random_solid_background(image_path, output_path, background_size):
# 随机选择一个背景颜色
background_color = random.choice(color_codes)
background_color = tuple(int(background_color[i:i+2], 16) for i in (1, 3, 5)) # 转换为RGB
try:
# 打开原始图片
with Image.open(image_path) as image:
# 创建一个新的随机颜色背景图片
background = Image.new('RGB', background_size, background_color)
# 计算原始图片在新背景中的位置
x = (background_size[0] - image.size[0]) // 2
y = (background_size[1] - image.size[1]) // 2
# 将原始图片粘贴到背景图片上
background.paste(image, (x, y), image if image.mode == 'RGBA' else None)
# 保存最终图片
background.save(output_path)
print(f"Processed and saved to {output_path}")
except Exception as e:
print(f"Error processing {image_path}: {e}")
def batch_process_images_with_random_background(source_folder, output_folder, background_size):
# 确保输出文件夹存在
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 遍历源文件夹中的所有图片文件
for image_filename in os.listdir(source_folder):
if image_filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
image_path = os.path.join(source_folder, image_filename)
output_path = os.path.join(output_folder, image_filename)
# 为每个图片文件添加随机颜色背景
add_image_to_random_solid_background(image_path, output_path, background_size)
# 源文件夹路径,存放原始图片
source_folder = r'D:\Waste\嵌入式\2023年嵌入式系统应用开发赛项—第三模块图像参考示例\2023年嵌入式系统应用开发赛项—第三模块图像参考示例\04-车牌参考图\车牌'
# 输出文件夹路径,存放处理后的图片
output_folder = r'D:\Waste\嵌入式\2023年嵌入式系统应用开发赛项—第三模块图像参考示例\2023年嵌入式系统应用开发赛项—第三模块图像参考示例\04-车牌参考图\001'
# 背景尺寸
background_size = (800, 480)
# 执行批处理函数
batch_process_images_with_random_background(source_folder, output_folder, background_size)