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
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇