利用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进阶教程之函数参数的多种传递方法
Aug 30 Python
详尽讲述用Python的Django框架测试驱动开发的教程
Apr 22 Python
基于Python 的进程管理工具supervisor使用指南
Sep 18 Python
Python 中开发pattern的string模板(template) 实例详解
Apr 01 Python
Python操作csv文件实例详解
Jul 31 Python
对Python强大的可变参数传递机制详解
Jun 13 Python
python模块常用用法实例详解
Oct 17 Python
python对数组进行排序,并输出排序后对应的索引值方式
Feb 28 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
May 19 Python
如何基于pandas读取csv后合并两个股票
Sep 25 Python
怎么用Python识别手势数字
Jun 07 Python
Python中的 No Module named ***问题及解决
Jul 23 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学习之运算符相关概念
2011/06/09 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
在第一个input框内输入内容.textarea自动得到第一个文件框的值的javascript代码
2007/04/20 Javascript
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
firefox插件Firebug的使用教程
2010/01/02 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
javascript表单正则应用
2017/02/04 Javascript
js a标签点击事件
2017/03/30 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
vue-cli随机生成port源码的方法
2019/09/02 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
tornado框架blog模块分析与使用
2013/11/21 Python
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
Python获取脚本所在目录的正确方法
2014/04/15 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
Python定时器实例代码
2017/11/01 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
手把手教你进行Python虚拟环境配置教程
2020/02/03 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
毕业生实习鉴定
2013/12/11 职场文书
自动化专业个人求职信范文
2013/12/30 职场文书
企业元宵节主持词
2014/03/25 职场文书
小学二年级学生评语
2014/04/21 职场文书
五一活动标语
2014/06/30 职场文书
员工2014年度工作总结
2014/12/09 职场文书
毕业论文指导教师评语
2014/12/30 职场文书
Mysql 设置boolean类型的操作
2021/06/04 MySQL