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批量修改文件后缀示例代码分享
Dec 24 Python
在Python中使用pngquant压缩png图片的教程
Apr 09 Python
用Python创建声明性迷你语言的教程
Apr 13 Python
使用Python编写一个模仿CPU工作的程序
Apr 16 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
Linux下python3.7.0安装教程
Jul 30 Python
用Python配平化学方程式的方法
Jul 20 Python
Python3 批量扫描端口的例子
Jul 25 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
python数据类型强制转换实例详解
Jun 22 Python
python 高阶函数简单介绍
Feb 19 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/02/28 无线电
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
JavaScript实现自定义媒体播放器方法介绍
2017/01/03 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
python使用socket远程连接错误处理方法
2015/04/29 Python
python 上下文管理器使用方法小结
2017/10/10 Python
详解Python odoo中嵌入html简单的分页功能
2019/05/29 Python
10分钟用python搭建一个超好用的CMDB系统
2019/07/17 Python
python生成大写32位uuid代码
2020/03/03 Python
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
2014年小学元旦活动方案
2014/02/12 职场文书
信息技术教学反思
2014/02/12 职场文书
医学专业应届生的自我评价
2014/02/28 职场文书
网站创业计划书
2014/04/30 职场文书
招股说明书范本
2014/05/06 职场文书
在校实习生求职信
2014/06/18 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
pytest进阶教程之fixture函数详解
2021/03/29 Python
python图片灰度化处理的几种方法
2021/06/23 Python
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB