序言

文中的文本及图片来自互联网,仅作学习培训、沟通交流应用,不具备一切商业行为,著作权归著作人全部,如不太好请立即在线留言以作解决 。

创作者:程序编写快乐

平时工作上 ,有时候以便选用互联网的一些素材图片,但这种素材图片通常挨打了水印,如果我们不明白PS就没法除掉水印 ,或是没法大批量除掉水印。这种就很危害大家的工作效能。

今日大家就一起来 ,用Python OpenCV三步除去水印,去水印必须应用的库:cv2 、numpy 。cv2是根据OpenCV的图象处理库,能够 对图象开展浸蚀,澎涨等实际操作;numpy这是一个强劲的解决引流矩阵和层面计算的库 。

 

照片去水印基本原理

1、校准噪音的特点 ,应用cv2.inRange二值化标志噪音对图片开展二值化解决,实际编码:cv2.inRange(img, np.array([200, 200, 240]), np.array([255, 255, 255])),把[200, 200, 200]~[255, 255, 255]之外的色调解决为0;

2、应用OpenCV的dilate方式 ,拓展特点的地区,提升照片处理实际效果;

3 、应用inpaint方式,把噪音的mask做为主要参数 ,逻辑推理并修复图片。

除掉右下方的水印流程

1 、从原图片,提取右下方一部分,另存新图片;

2、鉴别水印 ,颜色值为:[200, 200, 200]~[255, 255, 255]

3、除掉水印,复原照片;

4 、把原图片、除掉水印的新图片,开展重合合拼;

编码完成

import cv2
import numpy as np
from PIL import Image
import os

dir = os.getcwd()
path = "1.jpg"
newPath = "new.jpg"
img=cv2.imread(path,1)
hight,width,depth=img.shape[0:3]

#提取
cropped = img[int(hight*0.8):hight, int(width*0.7):width]  # 剪裁座标为[y0:y1, x0:x1]
cv2.imwrite(newPath, cropped)
imgSY = cv2.imread(newPath,1)

#照片二值化解决	,把[200,200,200]-[250,250,250]之外的色调变为0
thresh = cv2.inRange(imgSY,np.array([200,200,200]),np.array([250,250,250]))
#建立样子和规格的构造原素
kernel = np.ones((3,3),np.uint8)
#拓展待修补地区
hi_mask = cv2.dilate(thresh,kernel,iterations=10)
specular = cv2.inpaint(imgSY,hi_mask,5,flags=cv2.INPAINT_TELEA)
cv2.imwrite(newPath, specular)

#遮盖照片
imgSY = Image.open(newPath)
img = Image.open(path)
img.paste(imgSY, (int(width*0.7),int(hight*0.8),width,hight))
img.save(newPath)

 

实际效果比照

文章来源于网络 ,如有侵权请联系站长QQ61910465删除
本文版权归QU快排Www.seoGurubLog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ▲61910465