利用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之编写简单简单连接数据库并执行查询操作
Feb 27 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
python使用pyqt写带界面工具的示例代码
Oct 23 Python
Flask框架Flask-Principal基本用法实例分析
Jul 23 Python
python3 http提交json参数并获取返回值的方法
Dec 19 Python
基于python if 判断选择结构的实例详解
May 06 Python
pyqt5之将textBrowser的内容写入txt文档的方法
Jun 21 Python
python命名空间(namespace)简单介绍
Aug 10 Python
python递归下载文件夹下所有文件
Aug 31 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
May 15 Python
flask框架中的cookie和session使用
Jan 31 Python
pycharm 使用anaconda为默认环境的操作
Feb 05 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生成网页快照 不用COM不用扩展.
2010/02/11 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
php实现简单四则运算器
2020/11/29 PHP
JavaScript入门学习书籍推荐
2008/06/12 Javascript
javascript 对象比较实现代码
2009/04/27 Javascript
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
Js 随机数产生6位数字
2010/05/13 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
DIV+CSS+jQ实现省市联动可扩展
2016/06/22 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
2017/01/19 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
新手如何快速理解js异步编程
2019/06/24 Javascript
vue3.0 项目搭建和使用流程
2021/03/04 Vue.js
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
Python迭代和迭代器详解
2016/11/10 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
python3正则模块re的使用方法详解
2020/02/11 Python
python数据预处理 :数据共线性处理详解
2020/02/24 Python
pandas实现导出数据的四种方式
2020/12/13 Python
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
html5 音乐播放器 audio 标签使用概述
2013/07/15 HTML / CSS
原料仓管员岗位职责
2014/04/12 职场文书
交通事故案件代理词
2015/05/23 职场文书
师范生教育见习总结
2015/06/23 职场文书
比赛口号霸气押韵
2015/12/24 职场文书
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL