Python批量图⽚去⽔印的⽅法
平常⼯作中,有时为了采⽤⽹络的⼀些素材,但这些素材往往被打了⽔印,如果我们不懂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)
实现效果如下图,这个默认是去掉⽩⾊右下⾓的⽔印,⼤家可以根据⾃⼰的需求进⾏更改。
万圣节2022年是几月几日
到此这篇关于Python批量图⽚去⽔印的⽰例代码的⽂章就介绍到这了,更多相关Python批量图⽚去⽔印的⽰例代码内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
发布评论