利用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 不关闭控制台的实现方法
Oct 23 Python
Python正则捕获操作示例
Aug 19 Python
python操作excel的包(openpyxl、xlsxwriter)
Jun 11 Python
对python3 中方法各种参数和返回值详解
Dec 15 Python
djang常用查询SQL语句的使用代码
Feb 15 Python
python super用法及原理详解
Jan 20 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
Feb 27 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
Jul 05 Python
解决Python安装cryptography报错问题
Sep 03 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 Python
Python tkinter之ComboBox(下拉框)的使用简介
Feb 05 Python
Python开发简易五子棋小游戏
May 02 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
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
PHP之sprintf函数用法详解
2014/11/12 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
PHP7新增函数
2021/03/09 PHP
jQuery toggle()设置CSS样式
2009/11/05 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
2016/06/08 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
angularjs封装$http为factory的方法
2017/05/18 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
layui中使用jquery控制radio选中事件的示例代码
2018/08/15 jQuery
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
python实现发送邮件功能代码
2017/12/14 Python
python绘制双柱形图代码实例
2017/12/14 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
iPython pylab模式启动方式
2020/04/24 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
一款基于css3的列表toggle特效实例教程
2015/01/04 HTML / CSS
自荐书格式
2013/12/01 职场文书
客服工作职责
2013/12/11 职场文书
实习鉴定范文
2013/12/19 职场文书
超市重阳节活动方案
2014/02/10 职场文书
中式婚礼主持词
2014/03/13 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
教导处教学工作总结
2015/08/12 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python