Python-OpenCV使用基本图像处理技术进行水印去除

本文介绍了两种基本的水印去除方法,一种利用OpenCV的inpaint函数,另一种通过图像像素操作。虽然这些方法在某些情况下能取得不错的效果,但存在效率和鲁棒性问题。对于大批量、高效率的水印去除需求,作者提到将探讨更先进的深度学习技术作为解决方案。
摘要由CSDN通过智能技术生成

使用基本图像处理技术进行水印去除,主要采用OpenCV提供的库函数以及基本的图像处理进行图像修复,但是从鲁棒性方面可能存在不足。处理的图像可能存在一定的模糊水印去除不完整、留边等问题。本文参考了部分其他内容已在后文引用。

目前常用的水印去除方法主要使用深度学习相关前沿技术进行解决,详情可参考笔者博客:

使用深度学习技术进行水印去除

测试案例

第一种方法:

  该方法看着是不是很简单?没错就这么几行代码,但是这种方式需要一个美工,让他配合你做一张di.png

di.png

1

2

3

4

5

6

7

8

9

10

11

12

13

14

# 方式一

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

# 方式二

import cv2

import numpy

def get_water2():

    src = cv2.imread('yuan.png')

    mask = cv2.imread('di2.png')

    save = numpy.zeros(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]

                    if val < 0: val = 0

                save[row, col, channel] = val

    cv2.imwrite('result2.jpg', save)

get_water2()

  不多说直接,上效果图

  这两种方式,是相对来说效果很好的去除水印方式,也就是”人工”去除水印,但是该两种方式并不能满足我的要求,我需要大批量,高效率的去除水印,等我下一篇文章再来分享吧

参考:

https://www.jianshu.com/p/cc94a78e14e2

https://mp.weixin.qq.com/s/UfLkle4raCPIZvBLdswXkA

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值