python 去除水印_cv2 去除图片水印

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")

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值