利用Python+OpenCV三步去除水印


Posted in Python onMay 28, 2021

一、推理原理

1.标定噪声的特征,使用cv2.inRange二值化标识噪声对图片进行二值化处理,具体代码:cv2.inRange(img, np.array([200, 200, 240]), np.array([255, 255, 255])),把[200, 200, 200]~[255, 255, 255]以外的颜色处理为0

2.使用OpenCV的dilate方法,扩展特征的区域,优化图片处理效果

3.使用inpaint方法,把噪声的mask作为参数,推理并修复图片

二、推理步骤

1.从源图片,截取右下角部分,另存为新图片

2.识别水印,颜色值为:[200, 200, 200]~[255, 255, 255]

3.去掉水印,还原图片

4.把源图片、去掉水印的新图片,进行重叠合并

三、参考代码

import cv2
import numpy as np
from PIL import Image
import os
​
dir = os.getcwd()
path = "1.jpg"
newPath = "new.jpg"
img=cv2.imread(path,1)
hight,width,depth=img.shape[0:3]
​
#截取
cropped = img[int(hight*0.8):hight, int(width*0.7):width]  # 裁剪坐标为[y0:y1, x0:x1]
cv2.imwrite(newPath, cropped)
imgSY = cv2.imread(newPath,1)
​
#图片二值化处理,把[200,200,200]-[250,250,250]以外的颜色变成0
thresh = cv2.inRange(imgSY,np.array([200,200,200]),np.array([250,250,250]))
#创建形状和尺寸的结构元素
kernel = np.ones((3,3),np.uint8)
#扩展待修复区域
hi_mask = cv2.dilate(thresh,kernel,iterations=10)
specular = cv2.inpaint(imgSY,hi_mask,5,flags=cv2.INPAINT_TELEA)
cv2.imwrite(newPath, specular)
​
#覆盖图片
imgSY = Image.open(newPath)
img = Image.open(path)
img.paste(imgSY, (int(width*0.7),int(hight*0.8),width,hight))
img.save(newPath)

import cv2
import numpy as np
from PIL import Image
import os
​
dir = os.getcwd()
path = "1.jpg"
newPath = "new.jpg"
img=cv2.imread(path,1)
hight,width,depth=img.shape[0:3]
​
#截取
cropped = img[int(hight*0.8):hight, int(width*0.7):width]  # 裁剪坐标为[y0:y1, x0:x1]
cv2.imwrite(newPath, cropped)
imgSY = cv2.imread(newPath,1)
​
#图片二值化处理,把[200,200,200]-[250,250,250]以外的颜色变成0
thresh = cv2.inRange(imgSY,np.array([200,200,200]),np.array([250,250,250]))
#创建形状和尺寸的结构元素
kernel = np.ones((3,3),np.uint8)
#扩展待修复区域
hi_mask = cv2.dilate(thresh,kernel,iterations=10)
specular = cv2.inpaint(imgSY,hi_mask,5,flags=cv2.INPAINT_TELEA)
cv2.imwrite(newPath, specular)
​
#覆盖图片
imgSY = Image.open(newPath)
img = Image.open(path)
img.paste(imgSY, (int(width*0.7),int(hight*0.8),width,hight))
img.save(newPath)

四、效果图

没去水印前:

利用Python+OpenCV三步去除水印

去了后:

利用Python+OpenCV三步去除水印

到此这篇关于利用Python+OpenCV三步去除水印的文章就介绍到这了,更多相关Python+OpenCV去水印内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python模块学习 re 正则表达式
May 19 Python
python实现登陆知乎获得个人收藏并保存为word文件
Mar 16 Python
简单介绍Python的轻便web框架Bottle
Apr 08 Python
简单讲解Python中的闭包
Aug 11 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
python中csv文件的若干读写方法小结
Jul 04 Python
python把数组中的数字每行打印3个并保存在文档中的方法
Jul 17 Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 Python
python实现对变位词的判断方法
Apr 05 Python
PyTorch-GPU加速实例
Jun 23 Python
Pycharm连接远程服务器并远程调试的全过程
Jun 24 Python
详解OpenCV曝光融合
Apr 29 Python
python实现自定义日志的具体方法
May 28 #Python
python 爬取京东指定商品评论并进行情感分析
python b站视频下载的五种版本
May 27 #Python
教你怎么用python selenium实现自动化测试
Python Django框架介绍之模板标签及模板的继承
May 27 #Python
python 算法题——快乐数的多种解法
May 27 #Python
用Python监控你的朋友都在浏览哪些网站?
You might like
PHP中显示格式化的用户输入
2006/10/09 PHP
PHPlet在Windows下的安装
2006/10/09 PHP
php下实现折线图效果的代码
2007/04/28 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
Jquery 实现Tab效果 思路是js思路
2010/03/02 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
jQuery validate插件实现ajax验证重复的2种方法
2016/01/22 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
jQuery获取随机颜色的实例代码
2018/05/21 jQuery
JavaScript继承的特性与实践应用深入详解
2018/12/30 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
Python断言assert的用法代码解析
2018/02/03 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
Python中py文件引用另一个py文件变量的方法
2018/04/29 Python
pycharm设置注释颜色的方法
2018/05/23 Python
Pandas 同元素多列去重的实例
2018/07/03 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
2019/08/01 HTML / CSS
注塑工厂厂长岗位职责
2013/12/02 职场文书
家长给幼儿园的表扬信
2014/01/09 职场文书
单位提档介绍信
2014/01/17 职场文书
pytorch 如何使用float64训练
2021/05/24 Python
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS