二十行代码去除图片水印(别再找工具修图啦)

别再找工具修图啦,用代码吧

图片上常常有多余信息,如水印等,常常困扰啦多少痴男怨女。

在简书上看到一段有意思的内容。于是将它搬啦过来。
原地址:https://www.meiwen.com.cn/subject/dofckqtx.html。

消除水印

原图和效果图:
左边为原图,右边效果图
二十行代码去除图片水印(别再找工具修图啦)_第1张图片

代码

import cv2
import numpy as np




path="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

如果你觉得本文对你有用,请点个赞支持下,谢谢!

你可能感兴趣的:(CV)