python利⽤opencv去除图⽚⽔印
python 去除⽔印“⼈⼯”智能去除⽔印
这两天公司来了⼀个新的需求——去除⽔印,对于我⼀个从未接触过的这种事情的⼈来说,当时我是蒙的。不过⾸先我就去搜索了⼀下是否有该种合适的功能模块,经过我的筛选,发现opencv应该是最有满⾜我这个需求可能的模块了。
我先把我的测试例⼦放上来。
测试图⽚(你可能在别处看到过,没错就是你看到过的那个例⼦图)
第⼀种⽅法:世界上有多少种语言
该⽅法看着是不是很简单?没错就这么⼏⾏代码,但是这种⽅式需要⼀个美⼯,让他配合你做⼀张di.png
di.png
# ⽅式⼀
import cv2
def get_water():
# ⿊底⽩字
src = cv2.imread('yuan.png') # 默认的彩⾊图(IMREAD_COLOR)⽅式读⼊原始图像
提前批专科# black.jpg时时为安慰
mask = cv2.imread('di.png', cv2.IMREAD_GRAYSCALE) # 灰度图(IMREAD_GRAYSCALE)⽅式读⼊⽔印蒙版图像
# 参数:⽬标修复图像; 蒙版图(定位修复区域); 选取邻域半径; 修复算法(包括INPAINT_TELEA/INPAINT_NS,前者算法效果较好)
dst = cv2.inpaint(src, mask, 3, cv2.INPAINT_NS)
cv2.imwrite('result1.jpg', dst)
get_water()
看完上⾯这么多废话,其实你就想看看效果如何,那么来看⼀下该⽅式效果图
是不是想说效果很差,其实在我所测试使⽤的⽅法中,这种⽅法已经算是效果不错的了。别着急⾛,下⾯还有⼀种⽐这效果更好的⽅式第⼆种⽅式:
还是以上⼀张图⽚为例,这种⽅式还是需要美⼯配合,只是图⽚变了,同时换了⼀种算法模式,但是注意该⽅法效率不⾼,使⽤该图⽚时
跑⼀次代码就⾏了,但是若是别的图⽚,你可能需要跑⼏遍代码之后,才能出现最终效果(若你发现采⽤该⽅式去除⽔印,发现去除后的效果,
只是⽔印颜⾊变淡了,那么请你在对处理过的图,再次执⾏该代码,如此多次之后,请⽤⾁眼识别最好的效果)
di2.png抗战片电视剧
# ⽅式⼆
import cv2
import numpy
def get_water2():
src = cv2.imread('yuan.png')
mask = cv2.imread('di2.png')
save = s(src.shape, numpy.uint8) # 创建⼀张空图像⽤于保存
for row in range(src.shape[0]):
for col in range(src.shape[1]):
for channel in range(src.shape[2]):
if mask[row, col, channel] == 0:
val = 0
else:
reverse_val = 255 - src[row, col, channel]
val = 255 - reverse_val * 256 / mask[row, col, channel]在atm上倒着输入密码
if val < 0: val = 0
save[row, col, channel] = val
cv2.imwrite('result2.jpg', save)
get_water2()
人教版二年级下册语文期末试卷 不多说直接,上效果图
这两种⽅式,是相对来说效果很好的去除⽔印⽅式,也就是”⼈⼯”去除⽔印,但是该两种⽅式并不能满⾜我的要求,我需要⼤批量,⾼效率的去除⽔印,等我下⼀篇⽂章再来分享吧(容我在研究研究,哈哈)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论