1、安装python库
numpy、PIL、cv2 安装
2、代码运行
import cv2 as cv
import numpy as np
import os, random
from PIL import Image, ImageDraw, ImageFont
class WaterMark:
# 去除水印
def Test(self,path,file):
img = cv.imread(path)
# roi = img[930:966, 540:690]
height = img.shape[0] # 多少行 ==》 高
width = img.shape[1] # 多少列 ==》 宽
print(height, width)
roi = img[height - 44: height, width - 140: width] # 裁剪坐标为[y0:y1, x0:x1]
cv.imwrite('02.jpg',roi)
roi_hsv = cv.cvtColor(roi, cv.COLOR_BGR2HSV)
cv.imwrite('hsv.jpg',roi_hsv)
lower = np.array([11, 43, 221])
upper = np.array([180, 180, 255])
#创建水印蒙层
kernel = np.ones((3,3),np.uint8)
print(kernel)
cv.imwrite('kernel.jpg',kernel)
mask = cv.inRange(roi_hsv, lower, upper)
cv.imwrite(r'mask.jpg',mask)
#对水印蒙层进行膨胀操作
dilate = cv.dilate(mask, kernel, iterations=1)
# dilate = mask
cv.imwrite('dilate.jpg',dilate)
res = cv.inpaint(roi, dilate, 7, flags=cv.INPAINT_TELEA)
cv.imwrite('res.jpg',res)
img[height - 44: height, width - 140: width] = res
cv.imwrite('img/' + file,img)
# 添加水印
def add_text_to_image(image, text):
font = ImageFont.truetype('data1/simkai.ttf', 36)
# 添加背景
new_img = Image.new('RGBA', (image.size[0] * 3, image.size[1] * 3), (0, 0, 0, 0))
new_img.paste(image, image.size)
# 添加水印
font_len = len(text)
rgba_image = new_img.convert('RGBA')
text_overlay = Image.new('RGBA', rgba_image.size, (255, 255, 255, 0))
image_draw = ImageDraw.Draw(text_overlay)
for i in range(0, rgba_image.size[0], font_len*25+1):
for j in range(0, rgba_image.size[1], 200):
image_draw.text((i, j), text, font=font, fill=(0, 0, 0, 35))
text_overlay = text_overlay.rotate(-45)
image_with_text = Image.alpha_composite(rgba_image, text_overlay)
# 裁切图片
image_with_text = image_with_text.crop((image.size[0], image.size[1], image.size[0] * 2, image.size[1] * 2))
return image_with_text
# 移除目录文件下图片的水印
def remove_water(path):
w = WaterMark()
files = []
for i, j, k in os.walk(path):
files = k
for file in files:
f = path + file
if f.endswith(".gif"):
continue
print(f)
w.Test(f, file)
# 添加目录文件下图片的水印
def add_water(inDir, outDir, text):
files = []
for i, j, k in os.walk(inDir):
files = k
for file in files:
f = inDir + file
img = Image.open(f)
im_after = add_text_to_image(img, text).convert('RGB')
im_after.save(outDir + file)
if __name__ == '__main__':
# print(random.randint(0, 255))
add_water("D:\\bookImg2\\attachment\jijin\\20200301\\", "img\\", "好投资 www.csdcb.com")
最后修改于 2020-04-07 08:45:00
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

