# nowatermark
[![PyPI Version](https://img.shields.io/pypi/v/nowatermark.svg)](https://pypi.python.org/pypi/nowatermark)
[![Build Status](https://img.shields.io/travis/SixQuant/nowatermark/master.svg)](https://travis-ci.org/SixQuant/nowatermark)
[![Wheel Status](https://img.shields.io/badge/wheel-yes-brightgreen.svg)](https://pypi.python.org/pypi/nowatermark)
[![Coverage report](https://img.shields.io/codecov/c/github/SixQuant/nowatermark/master.svg)](https://codecov.io/github/SixQuant/nowatermark?branch=master)
[![Powered by SixQuant](https://img.shields.io/badge/powered%20by-SixQuant-orange.svg?style=flat&colorA=E1523D&colorB=007D8A)](https://sixquant.cn)
## Overview
remove watermark.
根据水印模板图片自动寻找并去除图片中对应的水印,利用 Python 和 OpenCV 快速实现。
## Install
### Mac OS Install OpenCV for Python3
- with-python3用来告诉homebrew用来让opencv支持python3,
- C++11 用来告诉homebrew提供c++11支持,
- with-contrib 用来安装opencv的contrib支持。
```bash
$ brew install opencv3 --without-python --with-python3 --c++11 --with-contrib
```
Verifying the installation:
```python
import cv2
print(cv2.__version__)
```
If you got this error: "ImportError: No module named 'cv2'", then your symlink might be corrupted, you need to link your opencv to python site-packages:
```bash
$ brew link --force opencv3
```
### Install nowatermark
```bash
$ pip3 install nowatermark
```
## Usage
```python
from nowatermark import WatermarkRemover
path = './data/'
watermark_template_filename = path + 'anjuke-watermark-template.jpg'
remover = WatermarkRemover()
remover.load_watermark_template(watermark_template_filename)
remover.remove_watermark(path + 'anjuke3.jpg', path + 'anjuke3-result.jpg')
remover.remove_watermark(path + 'anjuke4.jpg', path + 'anjuke4-result.jpg')
```
---
### Original
![Original](https://github.com/SixQuant/nowatermark/blob/master/data/anjuke2.jpg)
### Removed watermark
![Removed watermark](https://github.com/SixQuant/nowatermark/blob/master/data/anjuke2-result.jpg)
---
## Procedure
### Feature Matching(特征匹配)
* 对水印模板图片进行了一些初始化处理,比如二值化后去除非文字部分等
* 尝试了 OpenCV 的多种算法
- 比如 ORB + Brute-Force,即蛮力匹配,对应 cv2.BFMatcher() 方法
- 比如 SIFT + FLANN,即快速最近邻匹配,对应 cv2.BFMatcher() 方法
- 比如 Template Matching,即模板匹配,对应 cv2.matchTemplate() 方法
* 最后发现 Template Matching 最简单方便,效果也最好。
* 如果水印位置固定的话则可以跳过Feature Matching(特征匹配),直接进行下一步的Inpainting(图片修复)
### Inpainting(图片修复)
* 修复图片前需要做一些前置处理
- 首先要得到图片的去水印 Mask 图片,即和待处理图片一样大小的除了水印部分的文字部分外其他部分全部是黑色的位图
- 因为前面对水印做了二值化等处理,最终效果发现会有水印轮廓,所以需要对 Mask 图片做一次膨胀处理覆盖掉轮廓
* 选用了Telea在2004年提出的Telea算法,即基于快速行进(FMM)的修复算法
- 对应 cv2.inpaint(img, mask, 5, cv2.INPAINT_TELEA)
- 对应论文:[An Image Inpainting Technique Based on the Fast Marching Method (2004)](http://www.cs.rug.nl/~alext/PAPERS/JGT04/paper.pdf)
## Todo
* 由于某些图片的水印和背景图片相似程度太高,如何提高水印位置的识别正确率
* 改进修复图片算法,可以考虑用深度学习来做做看?
* Google CVPR 2017, [《On the Effectiveness of Visible Watermarks》](https://watermark-cvpr17.github.io)这个据说很牛的,回头可以读一读
## License
[MIT](https://tldrlegal.com/license/mit-license)
没有合适的资源?快使用搜索试试~ 我知道了~
Python-removewatermark根据水印模板图片自动寻找并去除图片中对应的水印
共26个文件
xml:7个
jpg:7个
py:5个
3星 · 超过75%的资源 需积分: 48 73 下载量 200 浏览量
2019-08-10
04:40:37
上传
评论 3
收藏 508KB ZIP 举报
温馨提示
remove watermark. 根据水印模板图片自动寻找并去除图片中对应的水印,利用 Python 和 OpenCV 快速实现。
资源推荐
资源详情
资源评论
收起资源包目录
Python-removewatermark根据水印模板图片自动寻找并去除图片中对应的水印.zip (26个子文件)
nowatermark-master
setup.py 876B
.gitignore 1KB
requirements.txt 10B
data
anjuke3-result.jpg 97KB
anjuke2.jpg 90KB
anjuke-watermark-template.jpg 6KB
anjuke4.jpg 48KB
anjuke2-result.jpg 94KB
anjuke3.jpg 95KB
anjuke4-result.jpg 74KB
.travis.yml 193B
nowatermark
__init__.py 119B
WatermarkRemover.py 6KB
LICENSE 1KB
README.md 4KB
demo
demo.py 465B
.idea
misc.xml 276B
workspace.xml 22KB
vcs.xml 180B
preferred-vcs.xml 172B
dictionaries
C.xml 203B
inspectionProfiles
Project_Default.xml 880B
nowatermark.iml 455B
modules.xml 274B
tests
test_WatermarkRemover.py 607B
.coveragerc 24B
共 26 条
- 1
资源评论
- xiaoqin03182023-05-23下载后怎么使用啊
- 淡若扶风2021-05-01什么玩意啊,都不能用,浪费积分
weixin_39840588
- 粉丝: 448
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功