图像处理
(一) 图像添加水印
前言
简单记录学习使用过程。
一、前言
用于视频和图像添加自己的logo(妈妈再也不怕我被盗视频了)
二、使用步骤
1.读取图像
读取图像数据,由于要加水印透明度,使用Image读入RGBA格式的图像:
img_PIL = Image.load(path).convert("RGBA")
2.创建水印图
代码如下(示例):
watermark = Image.new("RGBA", img_PIL.size, (255, 255, 255, 0))
font = ImageFont.truetype("simhei.ttf", 100)
draw = ImageDraw.Draw(watermark)
text_width, text_height = draw.textsize(text, font=font)
text_position = ((img_PIL.width-text_width)//2, (img_PIL.height-text_height)//2)
draw.text(text_position, text, font=font, fill=(255, 0, 0, 35))
3.添加透明度
alpha = watermark.split()[3]
alpha=ImageEnhance.Brightness(alpha).enhance(alphavalue)
watermark.putalpha(alpha)
4.完整代码
由于读入的视频数据是cv格式的,需要自己转换:
def add_text_(image, text, alphavalue=0.5):
#转为RGBA格式
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
img_PIL = Image.fromarray(np.asarray(image)).convert("RGBA")
watermark = Image.new("RGBA", img_PIL.size, (255, 255, 255, 0))
font = ImageFont.truetype("simhei.ttf", 100)
draw = ImageDraw.Draw(watermark)
text_width, text_height = draw.textsize(text, font=font)
#绘制在中间
text_position = ((img_PIL.width-text_width)//2, (img_PIL.height-text_height)//2)
#250,0,0是红色,35是透明度,0-255可选,255是不透明
draw.text(text_position, text, font=font, fill=(255, 0, 0, 35))
alpha = watermark.split()[3]
alpha = ImageEnhance.Brightness(alpha).enhance(alphavalue)
watermark.putalpha(alpha)
image_rgb = Image.alpha_composite(img_PIL, watermark)
img_cv = cv2.cvtColor(np.asarray(image_rgb), cv2.COLOR_RGB2BGR)
return img_cv
总结
简单的记录下打入水印的过程,大家可以根据自己的需求修改代码