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检测远程服务器tcp端口的方法
Mar 14 Python
Python实现发送QQ邮件的封装
Jul 14 Python
Python判断两个对象相等的原理
Dec 12 Python
Python中利用xpath解析HTML的方法
May 14 Python
Python交互环境下实现输入代码
Jun 22 Python
python+PyQT实现系统桌面时钟
Jun 16 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
Dec 28 Python
Pycharm+Scrapy安装并且初始化项目的方法
Jan 15 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 Python
python3 正则表达式基础廖雪峰
Mar 25 Python
Python通过kerberos安全认证操作kafka方式
Jun 06 Python
Scrapy模拟登录赶集网的实现代码
Jul 07 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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
第二节--PHP5 的对象模型
2006/11/16 PHP
基于header的一些常用指令详解
2013/06/06 PHP
PHP中Trait及其应用详解
2017/02/14 PHP
php实现简单加入购物车功能
2017/03/07 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
javascript URL编码和解码使用说明
2010/04/12 Javascript
js 设置选中行的样式的实现代码
2010/05/24 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
shiro授权的实现原理
2017/09/21 Javascript
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
Python实现telnet服务器的方法
2015/07/10 Python
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
python实现人脸识别代码
2017/11/08 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
大三自我鉴定范文
2013/10/05 职场文书
大学应届生求职简历的自我评价
2013/10/08 职场文书
优秀班干部事迹材料
2014/01/26 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
八年级作文之友谊
2019/12/02 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
20180830晚上第一届KSL半决赛 雨神vs解冻(二龙 三炮解说)
2022/04/01 星际争霸