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 = 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去除图片水印的更多相关文章
- python利用opencv去除水印方法
OpenCV(Open Source Computer Vision Library)是一个跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法 在python中可以利用opencv来去除 ...
- 用 Python 和 OpenCV 检测图片上的条形码
用 Python 和 OpenCV 检测图片上的的条形码 这篇博文的目的是应用计算机视觉和图像处理技术,展示一个条形码检测的基本实现.我所实现的算法本质上基于StackOverflow 上的这个问 ...
- 用 Python 和 OpenCV 检测图片上的条形码(转载)
原文地址:http://python.jobbole.com/80448/ 假设我们要检测下图中的条形码: # load the image and convert it to grayscale 1 ...
- 利用canvas添加图片水印--直接上代码
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- python利用opencv合成模糊图像
之前需要评估图像质量来筛选成像质量不错的图片,去除由于对焦,运动等造成的模糊图像,所以在构建数据集的时候考虑用opencv对清晰的图片进行处理获得模糊的图片从而进行训练. 1) 运动模糊图像 一般来说 ...
- C# 处理PPT水印(二)——去除水印效果(文本水印、图片水印)
本文将对C#处理PPT幻灯片中的水印进一步说明和介绍.在C# 处理PPT水印(一)一文中,分享了如何插入水印效果的方法,包括插入文字水印效果.插入图片作为水印效果两种情况,那对于不需要水印效果的情况, ...
- 用Python去除PDF水印
今天介绍下用 Python 去除 PDF (图片)的水印.思路很简单,代码也很简洁. 首先来考虑 Python 如何去除图片的水印,然后再将思路复用到 PDF 上面. 这张图片是前几天整理<数据 ...
- BugKu 2B+基于python的opencv的安装-------CTF 盲水印的套路
BugKu杂项-2B 下载图片后,binwalk下跑一跑,发现有个zip,分离. 值得一提的是,这个zip是伪加密的. 但是你在分离的时候,伪加密的图片也给你分离出来了.这两个图片2B和B2肉眼看起来 ...
- Android OpenCV实现图片叠加,水印
关于如何用纯OpenCV实现图片叠加的例子实在是太少,太多的是使用 C++,JNI实现的,如果要用C++的话,我们为啥不转行做C++ 下面的例子基于 Android JavaCV 实现了在im_bea ...
随机推荐
- 为什么要用Spring Boot?
什么是Spring Boot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而 ...
- python带颜色打印字符串
python带颜色打印字符串 之前调试pwn题的时候,有时候需要将某些特别的,重要的信息用不一样的颜色打印出来.查阅一些资料,了解了print函数的特性后,自己写了一个脚本,可以用来获取带颜色信息的字 ...
- apicloud打包的ios证书的获取方法
apicloud云编译的时候,需要测试证书或者正式证书进行编译. 那么这个证书是怎么来的呢?通过什么渠道可以获取呢? 这里我介绍下使用香蕉云编这个在线工具来生成: 1.登录香蕉云编,生成证书的csr文 ...
- 痞子衡嵌入式:盘点国内车规级MCU厂商
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是国内车规级MCU厂商及其产品. 在汽车电子领域,MCU的应用非常广泛,大到车身控制与动力总成,小到雨刷车窗等控制单元,都离不开MCU的身 ...
- 【java框架】MyBatis-Plus(1)--MyBatis-Plus快速上手开发及核心功能体验
1.MyBatis-Plus入门开发及配置 1.1.MyBatis-Plus简介 MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变, ...
- FTT简单入门板子
DFT : 1 #include <cstdio> 2 #include <iostream> 3 #include <cmath> 4 #include < ...
- DevExpress主要常用控件
DevExpress主要常用控件说明:1. TestEdit: 一个单行文本编辑器. 常用属性:Name:该控件的名称.Text:该控件中的内容.Enabled:该控件是否激活. Visible:控件 ...
- 对用pyinstaller打包的exe程序进行反编译,获得源码
参考文章: 1.https://www.cnblogs.com/DirWang/p/12018949.html#PyInstallerExtractor 2.https://msd.misuland. ...
- webpack核心模块tapable源码解析
上一篇文章我写了tapable的基本用法,我们知道他是一个增强版版的发布订阅模式,本文想来学习下他的源码.tapable的源码我读了一下,发现他的抽象程度比较高,直接扎进去反而会让人云里雾里的,所以本 ...
- 将Java编译为本地代码
将Java编译为本地代码 通常Java程序的执行流程为:将Java代码编译为Byte Code(字节码),然后JVM执行引擎执行编译好的Byte Code.这是一种中间语言的特性,它的好处就是可以做到 ...