You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何开发Python应用实现图片自动添加到模板?可用Pillow/OpenCV吗?

用Pillow或OpenCV实现图片自动填充到模板指定区域

完全可以用Pillow或OpenCV实现这个需求,下面分别给出两种工具的实现方案:

一、使用Pillow实现

步骤说明

  1. 加载模板图片与待填充图片,将模板转为RGB模式便于颜色识别
  2. 遍历模板像素,定位绿色区域的边界坐标,计算区域的宽高
  3. 将待填充图片缩放至匹配绿色区域的尺寸
  4. 将缩放后的图片粘贴到模板的对应位置并保存结果

代码示例

from PIL import Image
import numpy as np

# 加载图片
template_img = Image.open("template.png").convert("RGB")
fill_img = Image.open("fill_image.png")

# 将模板转为numpy数组便于处理
template_np = np.array(template_img)

# 定义绿色的RGB范围(可根据实际模板调整)
lower_green = np.array([0, 150, 0])
upper_green = np.array([100, 255, 100])

# 生成绿色区域掩码
mask = np.all((template_np >= lower_green) & (template_np <= upper_green), axis=-1)

# 获取绿色区域的边界坐标
y_coords, x_coords = np.where(mask)
x_min, x_max = x_coords.min(), x_coords.max()
y_min, y_max = y_coords.min(), y_coords.max()
region_width = x_max - x_min
region_height = y_max - y_min

# 缩放待填充图片到区域尺寸
resized_fill = fill_img.resize((region_width, region_height))

# 粘贴图片到模板对应位置
template_img.paste(resized_fill, (x_min, y_min))

# 保存结果
template_img.save("filled_template.png")

二、使用OpenCV实现

步骤说明

  1. 读取模板与待填充图片,将模板转为HSV格式(颜色识别更稳定)
  2. 设定绿色的HSV范围,生成掩码并去除噪点
  3. 提取掩码中绿色区域的外接矩形,得到位置与尺寸
  4. 缩放待填充图片至匹配尺寸,叠加到模板的指定区域
  5. 保存最终结果

代码示例

import cv2
import numpy as np

# 读取图片
template = cv2.imread("template.png")
fill_img = cv2.imread("fill_image.png")

# 转换为HSV格式
hsv_template = cv2.cvtColor(template, cv2.COLOR_BGR2HSV)

# 定义绿色的HSV范围(可根据实际模板调整)
lower_green = np.array([40, 40, 40])
upper_green = np.array([70, 255, 255])

# 生成掩码并去除噪点
mask = cv2.inRange(hsv_template, lower_green, upper_green)
mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, np.ones((5,5), np.uint8))

# 获取绿色区域的外接矩形
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
x, y, w, h = cv2.boundingRect(contours[0])

# 缩放待填充图片到区域尺寸
resized_fill = cv2.resize(fill_img, (w, h))

# 将缩放后的图片叠加到模板
template[y:y+h, x:x+w] = resized_fill

# 保存结果
cv2.imwrite("filled_template.png", template)

注意事项

  • 上述代码中的颜色范围需要根据你实际使用的模板绿色进行微调,确保能精准识别目标区域
  • 如果模板中有多个绿色区域,需要添加逻辑筛选出目标区域(比如面积最大的矩形)

内容的提问来源于stack exchange,提问作者Seokku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 16:48:11