别再找工具修图啦,用代码吧
图片上常常有多余信息,如水印等,常常困扰啦多少痴男怨女。
在简书上看到一段有意思的内容。于是将它搬啦过来。
原地址:https://www.meiwen.com.cn/subject/dofckqtx.html。
消除水印
原图和效果图:
左边为原图,右边效果图
代码
import cv2
import numpy as nppath="10.jpg"img=cv2.imread(path,1)hight,width,depth=img.shape[0:3]
#hight=img.shape[0]
#width=img.shape[1]
#depth=img.shape[2]
#图片二值化处理,把[200,200,200]-[250,250,250]以外的颜色变成0
thresh=cv2.inRange(img,np.array([200,200,200]),np.array([250,250,250]))
#创建形状和尺寸的结构元素
kernel=np.ones((3,3),np.uint8)
#扩展待修复区域
hi_mask=cv2.dilate(thresh,kernel,iterations=1)
specular=cv2.inpaint(img,hi_mask,5,flags=cv2.INPAINT_TELEA)cv2.namedWindow("image",0)
cv2.resizeWindow("image",int(width/2),int(hight/2))
cv2.imshow('image',img)cv2.namedWindow('newimage',0)
cv2.resizeWindow('newimage',int(width/2),int(hight/2))
cv2.imshow('newimage',specular)cv2.waitKey(0)
cv2.destroyAllWindows()
关键点
#图片二值化处理,把[200,200,200]-[250,250,250]以外的颜色变成0
thresh=cv2.inRange(img,np.array([200,200,200]),np.array([250,250,250]))
关键在于如何选择区间,将区间外的颜色变为0。
多试几下吧。
颜色由 红黄蓝 三色组成。通道的数值为0-255. 每个通道的值越大,组合起来的颜色色块越亮。值越小越暗。。如果水印与图片其他部分有明显差距,还是可以找出来的,效果应该都还可以。
非研究CV,目前还不能给出更好的方案。
后续有想法学习下CV
如果你觉得本文对你有用,请点个赞支持下,谢谢!