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 = 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()

  不多说直接,上效果图

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

python 利用opencv去除图片水印的更多相关文章

  1. python利用opencv去除水印方法

    OpenCV(Open Source Computer Vision Library)是一个跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法 在python中可以利用opencv来去除 ...

  2. 用 Python 和 OpenCV 检测图片上的条形码

      用 Python 和 OpenCV 检测图片上的的条形码 这篇博文的目的是应用计算机视觉和图像处理技术,展示一个条形码检测的基本实现.我所实现的算法本质上基于StackOverflow 上的这个问 ...

  3. 用 Python 和 OpenCV 检测图片上的条形码(转载)

    原文地址:http://python.jobbole.com/80448/ 假设我们要检测下图中的条形码: # load the image and convert it to grayscale 1 ...

  4. 利用canvas添加图片水印--直接上代码

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. python利用opencv合成模糊图像

    之前需要评估图像质量来筛选成像质量不错的图片,去除由于对焦,运动等造成的模糊图像,所以在构建数据集的时候考虑用opencv对清晰的图片进行处理获得模糊的图片从而进行训练. 1) 运动模糊图像 一般来说 ...

  6. C# 处理PPT水印(二)——去除水印效果(文本水印、图片水印)

    本文将对C#处理PPT幻灯片中的水印进一步说明和介绍.在C# 处理PPT水印(一)一文中,分享了如何插入水印效果的方法,包括插入文字水印效果.插入图片作为水印效果两种情况,那对于不需要水印效果的情况, ...

  7. 用Python去除PDF水印

    今天介绍下用 Python 去除 PDF (图片)的水印.思路很简单,代码也很简洁. 首先来考虑 Python 如何去除图片的水印,然后再将思路复用到 PDF 上面. 这张图片是前几天整理<数据 ...

  8. BugKu 2B+基于python的opencv的安装-------CTF 盲水印的套路

    BugKu杂项-2B 下载图片后,binwalk下跑一跑,发现有个zip,分离. 值得一提的是,这个zip是伪加密的. 但是你在分离的时候,伪加密的图片也给你分离出来了.这两个图片2B和B2肉眼看起来 ...

  9. Android OpenCV实现图片叠加,水印

    关于如何用纯OpenCV实现图片叠加的例子实在是太少,太多的是使用 C++,JNI实现的,如果要用C++的话,我们为啥不转行做C++ 下面的例子基于 Android JavaCV 实现了在im_bea ...

随机推荐

  1. 面试题-python 如何读取一个大于 10G 的txt文件?

    前言 用python 读取一个大于10G 的文件,自己电脑只有8G内存,一运行就报内存溢出:MemoryError python 如何用open函数读取大文件呢? 读取大文件 首先可以自己先制作一个大 ...

  2. PAT-1148(Werewolf )思维+数学问题

    Werewolf PAT-1148 题目的要点是不管n规模多大,始终只有两个狼人 说谎的是一个狼人和一个好人 紧紧抓住这两点进行实现和分析 #include <iostream> #inc ...

  3. Elasticsearch核心技术(一):Elasticsearch环境搭建

    磨刀不误砍柴工,要学习Elasticsearch,首先要搭建起来一套学习环境,本文为手把手教你在MacOS上面搭建Elasticsearch学习环境. 1.1 Elasticsearch安装 Elas ...

  4. 面试必备——Java多线程与并发(二)

    1.synchroized相关(锁的是对象,不是代码) (1)线程安全问题的主要原因 存在共享数据(也称临界资源) 存在多线程共同操作这些共享数据 解决:同一时刻有且只有一个线程在操作共享数据,其他线 ...

  5. BeanShell 用法汇总

    一.什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种松散类型的脚本语言(这点和JS类似); BeanS ...

  6. android分析之Binder 01

    终于还是得写一篇关于Binder的文章了.从最初接触Android到花大把时间研究Android源码,Binder一直是分析道路的拦路虎.看了几本最流行的Android源码分析书籍,每次基本上都不能把 ...

  7. Java中的名称命名规范:

    Java中的名称命名规范:(不遵守,也不会出现编译的错误) 包名:多单词组成时所有字母都小写:xxxyyyzzz 类名.接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz 变量名.方法名: ...

  8. 7、MyBatis教程之分页实现

    8.分页实现 1.limit实现分页 思考:为什么需要分页? 在学习mybatis等持久层框架的时候,会经常对数据进行增删改查操作,使用最多的是对数据库进行查询操作,如果查询大量数据的时候,我们往往使 ...

  9. 什么是SSR SSR有什么用 如何使用使用SSR

    什么是SSR 以下信息来自维基百科: Shadowsocks(简称SS)是一种基于Socks5代理方式的加密传输协议,也可以指实现这个协议的各种开发包.当前包使用Python.C.C++.C#.Go语 ...

  10. elasticsearch 7.7 配置文件:elasticsearch.yml

    # ======================== Elasticsearch Configuration ========================= # # NOTE: Elasticse ...