基于python批量叠加目标图和背景图

本文介绍了如何使用Python编写函数实现两张图片的叠加,并通过批量处理实现多个图像的融合操作。在处理尺寸不一致的图片时,建议先进行resize操作以确保兼容。
摘要由CSDN通过智能技术生成

首先写一个将两张图片叠加的函数:

import cv2
def pic_superpose(path_img_bg, path_img_ip):
    img1 = cv2.imread(path_img_bg)#背景图的读取
    img2 = cv2.imread(path_img_ip)#需要插入图的读取
    rows, cols = img2.shape[:2]
    roi = img1[:rows, :cols]
    # 创建掩膜
    img2gray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
    ret, mask = cv2.threshold(img2gray, 150, 255, cv2.THRESH_BINARY)#将灰度图150-255之间的设为黑色,其余为白色,用于制作背景(根据你想要扣的图,设置灰度图的颜色)
    mask_inv = cv2.bitwise_not(mask)#用于抠图

    # # 保留除logo外的背景
    img1_bg = cv2.bitwise_and(roi, roi, mask=mask)#背景处理,将目标位置的数字扣掉
    img2_fg = cv2.bitwise_and(img2, img2, mask=mask_inv)#目标图案的背景扣掉
    dst = cv2.add(img1_bg, img2_fg)  # 进行融合
    img1[:rows, :cols] = dst  # 融合后放在原图上
    return img1
# cv2.imshow('image', img1)
# cv2.waitKey(0)

然后再调用这个函数批量进行叠加就可以完成一个简单的图像处理了(这个python文件名是yanmo)

import yanmo
import cv2
import random
for i in range(1
### 回答1: 你可以使用Pillow库来批量添加水印,具体步骤如下: 1. 安装Pillow库:在命令行中执行 `pip install Pillow` 进行安装。 2. 编写代码:可以参考下面的示例代码,进行修改和适应自己的需求。 ```python from PIL import Image, ImageDraw, ImageFont import os # 要添加水印的文件夹路径 folder_path = 'path/to/folder' # 水印文字和字体大小 watermark_text = 'watermark' font_size = 30 # 水印颜色和透明度 watermark_color = (255, 255, 255, 128) # 遍历文件夹中的所有图片文件 for filename in os.listdir(folder_path): if filename.endswith('.jpg') or filename.endswith('.png'): # 打开图片并添加水印 image_path = os.path.join(folder_path, filename) image = Image.open(image_path).convert('RGBA') watermark = Image.new('RGBA', image.size, (0, 0, 0, 0)) draw = ImageDraw.Draw(watermark) font = ImageFont.truetype('arial.ttf', font_size) text_width, text_height = draw.textsize(watermark_text, font) x = image.width - text_width - 10 y = image.height - text_height - 10 draw.text((x, y), watermark_text, font=font, fill=watermark_color) image_with_watermark = Image.alpha_composite(image, watermark) # 保存图片 image_with_watermark.save(image_path) ``` 3. 运行代码:在命令行中执行 `python watermark.py` 运行代码,并等待程序执行完成。 注意:在运行代码前,需要将代码中的 `folder_path` 修改为要添加水印的文件夹路径,将 `watermark_text` 修改为要添加的水印文字,将 `font_size` 修改为水印的字体大小,将 `watermark_color` 修改为水印的颜色和透明度。另外,代码中使用的是默认的字体 `arial.ttf`,如果你想要使用其他字体,需要将字体文件放到代码所在的目录下,并将字体文件名修改为相应的名称。 ### 回答2: 在Python批量添加水印可以通过使用PIL(Python Imaging Library)库来实现。以下是一个简单的示例代码: ```python from PIL import Image from PIL import ImageDraw from PIL import ImageFont import os def add_watermark(input_dir, output_dir, watermark_text): # 遍历输入目录中的所有图片文件 for file_name in os.listdir(input_dir): if file_name.endswith('.jpg') or file_name.endswith('.png'): # 打开图片文件 input_path = os.path.join(input_dir, file_name) image = Image.open(input_path).convert('RGBA') # 创建水印文本 watermark = Image.new('RGBA', image.size, (255, 255, 255, 0)) draw = ImageDraw.Draw(watermark) font = ImageFont.truetype('arial.ttf', 36) text_width, text_height = draw.textsize(watermark_text, font=font) text_x = image.width - text_width - 10 text_y = image.height - text_height - 10 draw.text((text_x, text_y), watermark_text, fill=(128, 128, 128, 128), font=font) # 将水印叠加到原始图片中 watermarked = Image.alpha_composite(image, watermark) # 保存水印图片 output_path = os.path.join(output_dir, file_name) watermarked.save(output_path) ``` 使用以上代码,你可以将水印文本添加到指定目录中的所有图片上,生成带有水印的图片并保存到输出目录中。你只需要指定输入目录、输出目录以及要添加的水印文本即可。注意,你需要提前安装PIL库,并将所需的字体文件(例如arial.ttf)放在与你的Python脚本相同的目录下。 ### 回答3: 使用Python批量添加水印可以借助第三方库进行操作。下面我以使用Pillow库为例来解释: 1. 首先,确保你已经安装了Pillow库。可以使用以下命令安装:pip install pillow。 2. 导入Pillow库和其他需要的库:from PIL import Image, ImageDraw, ImageFont, ImageEnhance 3. 批量添加水印的主要步骤如下: - 遍历需要加水印的图片,可以使用os库的相关函数来获取图片文件列表。 - 加载水印图片背景图片:watermark_img = Image.open('水印图片路径'),background_img = Image.open('背景图片路径')。 - 调整水印的大小:可以使用watermark_img.thumbnail()函数来调整水印图片的大小。 - 在背景图片上添加水印:使用ImageDraw库的text()函数,在background_img对象上进行绘制。 - 保存加了水印的图片:使用background_img对象的save()函数将图片保存到指定目录下。 4. 示例代码如下: ```python from PIL import Image, ImageDraw, ImageFont import os # 加载水印图片背景图片 watermark_img = Image.open('水印图片路径') # 调整水印的大小 watermark_img.thumbnail((100, 100)) # 自定义水印大小 watermark_width, watermark_height = watermark_img.size # 获取所有需加水印的图片文件列表 image_dir = '图片文件夹路径' image_files = [file for file in os.listdir(image_dir) if file.endswith(('.jpg', '.png'))] # 设置水印文字的样式 watermark_text = "水印文字" watermark_font = ImageFont.truetype('字体文件路径', 30) # 自定义字体和大小 # 遍历图片列表,添加水印 for image_file in image_files: image_path = os.path.join(image_dir, image_file) background_img = Image.open(image_path) # 在背景图片上添加水印 draw = ImageDraw.Draw(background_img) draw.text((background_img.size[0] - watermark_width, background_img.size[1] - watermark_height), watermark_text, fill=(255, 255, 255), font=watermark_font) # 保存加了水印的图片 output_dir = '保存加水印图片的文件夹路径' output_path = os.path.join(output_dir, image_file) background_img.save(output_path) background_img.close() ``` 通过以上步骤和示例代码,你可以使用Python批量添加水印到多张图片中。请确保提供正确的水印图片路径、背景图片路径、字体文件路径和保存加水印图片的文件夹路径。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值