python 实现图片修复(可用于去水印)


Posted in Python onNovember 19, 2020

在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以消除这些噪声呢?

答案是肯定的,依然是被我们用了无数次的OpenCV这款优秀的框架。

效果预览

python 实现图片修复(可用于去水印)

图片修复原理

那OpenCV究竟是怎么实现的,简单的来说就是开发者标定噪声的特征,在使用噪声周围的颜色特征推理出应该修复的图片的颜色,从而实现图片修复的。

程序实现解析

  • 标定噪声的特征,使用cv2.inRange二值化标识噪声对图片进行二值化处理,具体代码:cv2.inRange(img, np.array([240, 240, 240]), np.array([255, 255, 255])),把[240, 240, 240]~[255, 255, 255]以外的颜色处理为0;
  • 使用OpenCV的dilate方法,扩展特征的区域,优化图片处理效果;
  • 使用inpaint方法,把噪声的mask作为参数,推理并修复图片;

完整代码

#coding=utf-8
#图片修复

import cv2
import numpy as np

path = "img/inpaint.png"

img = cv2.imread(path)
hight, width, depth = img.shape[0:3]

#图片二值化处理,把[240, 240, 240]~[255, 255, 255]以外的颜色变成0
thresh = cv2.inRange(img, np.array([240, 240, 240]), np.array([255, 255, 255]))

#创建形状和尺寸的结构元素
kernel = np.ones((3, 3), np.uint8)

#扩张待修复区域
hi_mask = cv2.dilate(thresh, kernel, iterations=1)
specular = cv2.inpaint(img, hi_mask, 5, flags=cv2.INPAINT_TELEA)

cv2.namedWindow("Image", 0)
cv2.resizeWindow("Image", int(width / 2), int(hight / 2))
cv2.imshow("Image", img)

cv2.namedWindow("newImage", 0)
cv2.resizeWindow("newImage", int(width / 2), int(hight / 2))
cv2.imshow("newImage", specular)
cv2.waitKey(0)
cv2.destroyAllWindows()

以上就是python 实现图片修复(可用于去水印)的详细内容,更多关于python 图片修复的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
Mar 30 Python
Python读写配置文件的方法
Jun 03 Python
python编程开发之类型转换convert实例分析
Nov 13 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
Apr 12 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
python与php实现分割文件代码
Mar 06 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
Oct 17 Python
Python 正则表达式匹配字符串中的http链接方法
Dec 25 Python
python 实现手机自动拨打电话的方法(通话压力测试)
Aug 08 Python
解决python3 requests headers参数不能有中文的问题
Aug 21 Python
使用python 对验证码图片进行降噪处理
Dec 18 Python
python如何写try语句
Jul 14 Python
python 删除系统中的文件(按时间,大小,扩展名)
Nov 19 #Python
Python并发爬虫常用实现方法解析
Nov 19 #Python
python实现文件分片上传的接口自动化
Nov 19 #Python
Python类class参数self原理解析
Nov 19 #Python
Python爬虫如何破解JS加密的Cookie
Nov 19 #Python
python制作一个简单的gui 数据库查询界面
Nov 19 #Python
解决python3中os.popen()出错的问题
Nov 19 #Python
You might like
一步一步学习PHP(8) php 数组
2010/03/05 PHP
php URL跳转代码 减少外链
2011/06/25 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
php数组使用规则分析
2015/02/27 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
海量经典的jQuery插件集合
2010/01/12 Javascript
jquery 表格分页等操作实现代码(pagedown,pageup)
2010/04/11 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
vue父组件触发事件改变子组件的值的方法实例详解
2019/05/07 Javascript
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
Python3使用requests包抓取并保存网页源码的方法
2016/03/15 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
2018/12/18 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
python自定义函数def的应用详解
2020/06/03 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
区分python中的进程与线程
2020/08/13 Python
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
给客户的道歉信
2014/01/13 职场文书
高校十八大报告感想
2014/01/27 职场文书
经销商年会策划方案
2014/05/29 职场文书
新学期开学标语
2014/06/30 职场文书
节能环保演讲稿
2014/08/28 职场文书
2015年反洗钱工作总结
2015/04/25 职场文书
大学生团日活动总结
2015/05/06 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书