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

    技术2022-07-11  80

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

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

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

    消除水印

    原图和效果图: 左边为原图,右边效果图

    代码

    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

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

    Processed: 0.010, SQL: 9