效果图
import os
import cv2
from PIL import Image
import numpy as np
def process_image(input_path, output_path):
# 使用Pillow读取图像
img_pil = Image.open(input_path)
# 将Pillow图像转换为OpenCV图像
img = np.array(img_pil)
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
# 将图像转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 应用阈值化
_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 将OpenCV图像转换为PIL图像
binary_pil = Image.fromarray(binary)
# 转换图像模式为RGBA
binary_pil = binary_pil.convert("RGBA")
# 创建一个新的透明图像
new_image = Image.new("RGBA", binary_pil.size)
# 遍历图像中的每个像素
for x in range(binary_pil.width):
for y in range(binary_pil.height):
# 获取当前像素的颜色
pixel = binary_pil.getpixel((x, y))
# 如果像素为白色,则设置为透明
if pixel == (255, 255, 255, 255):
new_image.putpixel((x, y), (255, 255, 255, 0))
else:
new_image.putpixel((x, y), pixel)
# 将图像保存为GIF
new_image.save(output_path)
# 指定要遍历的文件夹
folder_path = './'
# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
# 检查文件是否为jpg文件
if filename.endswith('.jpg') or filename.endswith('.png'):
input_path = os.path.join(folder_path, filename)
output_path = os.path.join(folder_path, filename[:-4] + '-converted.png')
process_image(input_path, output_path)
print(filename + "完成")
print("完成!")
input()