利用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的pandas框架操作Excel文件中的数据教程
Mar 31 Python
使用Python的PIL模块来进行图片对比
Feb 18 Python
使用Python简单的实现树莓派的WEB控制
Feb 18 Python
解决Python requests库编码 socks5代理的问题
May 07 Python
好的Python培训机构应该具备哪些条件
May 23 Python
python实现输入数字的连续加减方法
Jun 22 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
Nov 17 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
Dec 01 Python
Python wordcloud库安装方法总结
Dec 31 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
May 28 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/11/25 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
PHP获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
Javascript valueOf 使用方法
2008/12/28 Javascript
动态加载js和css(外部文件)
2013/04/17 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
JS实现多物体运动的方法详解
2018/01/23 Javascript
JS实现的简单分页功能示例
2018/08/23 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
微信小程序获取用户信息的两种方法wx.getUserInfo与open-data实例分析
2019/05/03 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
JavaScript事件冒泡机制原理实例解析
2020/01/14 Javascript
[01:23:59]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 VP vs Secret
2018/04/03 DOTA
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
JSON Web Tokens的实现原理
2017/04/02 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
Python对列表的操作知识点详解
2019/08/20 Python
python3实现弹弹球小游戏
2019/11/25 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
户籍证明书标准模板
2014/09/10 职场文书
辅导员学期工作总结
2015/08/14 职场文书
保险公司增员口号
2015/12/25 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
Python数据可视化之用Matplotlib绘制常用图形
2021/06/03 Python