问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

利用Python去除图片水印,有手就行

发布网友 发布时间:2024-10-03 05:57

我来回答

1个回答

热心网友 时间:2024-10-05 14:48

有同学问,既然Python这么牛逼,可不可使用Python去除图片水印的方法呢?

这个肯定有啊,不过由于图片水印的种类有很多,今天我们先讲最简单的一种。

即上图中的①类水印,这种水印存在白色背景上的文档里,水印是灰色,需要保留的文字是黑色。

这种通常可以进行简单的亮度/对比度转换,直到水印消失并降低亮度以进行补偿[1]。参考别人的方法,我发现可以用多种方法去除水印。大致原理比较相似,下面先讲OpenCV的方法。

OpenCV + Numpy

本方法需要使用的库:cv2、numpy。cv2是基于OpenCV的图像处理库,可以对图像进行腐蚀,膨胀等操作;Numpy这是一个强大的处理矩阵和维度运算的库。

函数简介

介绍一下cv2的三个基本函数:使用cv2.imread(),cv2.imshow(),cv2.imwrite()分别可以读取、显示和保存图像。

img=cv2.imread('test.png')cv2.imshow('test.png',img)cv2.waitKey(0)cv2.imwrite('test_2.png',img)

对于Numpy呢,则要用到np.clip(),它是一个截取函数,用于截取数组中小于或者大于某值的部分,并使得被截取部分等于固定值。

np.clip(a,a_min,a_max,out=None):

具体用法:

可以看到,数组x中的所有数限定到范围0和5之间。为啥要介绍这些函数呢,接着往下看。

色彩转换

回到本文一开始,我们想去除文档图片中的水印。

上图中我选取了三个点,这三个像素点分别对应背景白色、黑色字体以及灰色的水印。

我们现在要做的事,就是想办法把水印转换成白色背景。换言之,就是把图片中[217,217,217]的像素点转换成[255,255,255]。

当然这个[217,217,217]也不是固定的,只是一个范围。为了方便调整,我选取了一些像素点,做了一个线性回归。

希望把图片整体的像素颜色做一个改变,原有黑色字体尽量跟原来一致,而水印部分则一定要≥255,然后就可以通过np.clip()限定区间,使之都变成[255,255,255]。

说干就干

importcv2importnumpyasnpimg=cv2.imread('test.png')new=np.clip(1.4057577998008846*img-38.33089999653017,0,255).astype(np.uint8)cv2.imwrite('removed.png',new)

下面我们看看调整后的效果(左侧是转换前,右侧是转换后)。

左:转换前 右:转换后

处理效果还是不错的,说明对于这类文档图片水印,通过几行Python代码就可以轻松去除水印。

不过通过线性回归改变整体图片颜色,也会影响原有的黑色文本,导致其颜色发生了微微变化。

那我们能不能简单粗暴一点!只改变水印的颜色呢?

也可以试试。

PIL + itertools

PIL也是一个Python 图像处理库,其中Image模块是在Python PIL图像处理中常见的模块,对图像进行基础操作的功能基本都包含于此模块内。

itertools之前更是被我们称为一个 零差评的 Python 内置库。其中itertools.product用来产生多个列表和迭代器的(积)。

还是跟之前一个原理,我们希望将图片中[217,217,217]的像素点转换成[255,255,255]。

那就简单粗暴一点,也就是像素值相加大概600(217+217+217)以上的像素点,都改成[255,255,255]就好了。

fromitertoolsimportproductfromPILimportImageimg=Image.open('test.png')width,height=img.sizeforposinproduct(range(width),range(height)):ifsum(img.getpixel(pos)[:3])>600:img.putpixel(pos,(255,255,255))img.save('removed_1.png')

运行结果,对比一下。

左:转换前 右:转换后

与第一种方法对比,肉眼也没看出来太明显差别。

那大家就喜欢那种方法就用哪个吧!

我们的文章到此就结束啦,如果你对去水印有兴趣,可以动手实战一下,代码敲一下,会有更深刻的体验。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? ...使用金额没有超过十万但微信支付用不了,怎么办? 如何从0开始搭建自己的小红书账号 点亮哥:如何借助小红书打造自己的个人IP 不知道昨天晚上怎么扣我8.9元,我没买东西,都睡着了,买什么啊? 无缘无故在拼多多多少买东西,我的钱就没有了,我还没买什么东西都没买... 第一次在拼多多上买了腰果,钱已扣除了,他们会发货给我吗? 小红书怎么保护账号安全? 拼多多扣银行卡钱怎么回事? 黑檀家具涂上核桃油后发白怎么回事 我没有在拼多多上下单,钱却扣了,怎么办? ...10分之问上拼多多扣了我的钱,我有密码,为什么能把我银行卡的钱凭白... 我没买东西为什么会收到快递 小红书能看到屏蔽消息吗? ...影楼不给我拷贝所有的底片,只给20张精修的底片,请问这合理吗?如果... 中国空间站运行时间查询 中国空间站一天环绕地球几圈 天宫一号绕地球一圈需要90分,估一估,飞行119圈大约要用时多少分? ...地球飞行一圈需要九十分钟绕地球一圈需要十六分钟需要多少分?_百度... 中国天宫一号载人航天器绕地球飞行家 天宫一号绕地球一圈约90分钟。绕地球121圈大约要多少分钟?求详细... CV学习笔记(五):ROI与泛洪填充 格斗江湖夫妻可以共用一个戒指吗 所有女生会员服务中心成长值有什么用 MB55-2009G(S)全自动洗衣机故障E3什么问题? 抖音小红书快手企业号认证高返点!认证最多可返1000+! 恐袭波士顿原型马拉松爆炸真实故事详解 中国留学生智斗歹徒 如何评价电影《恐袭波士顿》(patriotsday)? 《恐袭波士顿》:根据真实事件改编,全程高能危机四伏 我晚上突然喘不过气来,仰头呼吸困难,直喘气的.感觉非常危险,而且每次... 私心杂念怎么造句 阿莫西林钠-克拉维酸钾会引起哪些严重的不良反应? 阿莫西林克拉维酸钾(7:1)片不良反应 阿莫西林-克拉维酸钾【不良反应】 阿莫西林克拉维酸钾咀嚼片不良反应 15W一下的车哪个性价比最高! 大众Polo最小离地间隙多少 事业单位考试考的是哪几门科目? 请问,1.事业单位招聘启示上明确写着要求政治面貌为党员,不是党员还能... 回顾2020展望2021的短句(回顾2023,展望2023) 展望未来的唯美句子(关于未来的励志短句)