序言
文中的文本及图片来自互联网,仅作学习培训、沟通交流应用,不具备一切商业行为,著作权归著作人全部,如不太好请立即在线留言以作解决 。
创作者:程序编写快乐
平时工作上 ,有时候以便选用互联网的一些素材图片,但这种素材图片通常挨打了水印,如果我们不明白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)