利用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线程详解
Jun 24 Python
简单的Apache+FastCGI+Django配置指南
Jul 22 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
Sep 25 Python
详解K-means算法在Python中的实现
Dec 05 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
PyTorch搭建一维线性回归模型(二)
May 22 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
python错误调试及单元文档测试过程解析
Dec 19 Python
python中xlutils库用法浅析
Dec 29 Python
python实现简单区块链结构
Apr 25 Python
python实现三次密码验证的示例
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 不使用js实现页面跳转
2014/02/11 PHP
php调用nginx的mod_zip模块打包ZIP文件
2014/06/11 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
JS自动适应的图片弹窗实例
2013/06/29 Javascript
基于jquery的禁用右键、文本选择功能、复制按键的实现代码
2013/08/27 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
2015/11/02 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
2016/07/22 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
vue实现选项卡及选项卡切换效果
2018/04/24 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
微信小程序Echarts图表组件使用方法详解
2019/06/25 Javascript
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python多进程multiprocessing.Pool类详解
2018/04/27 Python
python中调试或排错的五种方法示例
2019/09/12 Python
python实现在一个画布上画多个子图
2020/01/19 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
Jupyter Notebook添加代码自动补全功能的实现
2021/01/07 Python
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
银行办理业务介绍信
2014/01/18 职场文书
工会主席岗位责任制
2014/02/11 职场文书
生产车间标语
2014/06/11 职场文书
2014年生活老师工作总结
2014/12/23 职场文书
2015年幼师工作总结
2015/04/28 职场文书
2015年小班保育员工作总结
2015/05/27 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python