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 流程控制实例代码
Sep 25 Python
状态机的概念和在Python下使用状态机的教程
Apr 11 Python
python删除特定文件的方法
Jul 30 Python
Python中的sort()方法使用基础教程
Jan 08 Python
python3将视频流保存为本地视频文件
Jun 20 Python
解决新django中的path不能使用正则表达式的问题
Dec 18 Python
Django用户身份验证完成示例代码
Apr 03 Python
通过实例解析Python RPC实现原理及方法
Jul 07 Python
Python try except finally资源回收的实现
Jan 25 Python
Python实现简单的2048小游戏
Mar 01 Python
Python的property属性详细讲解
Apr 11 Python
python游戏开发之pygame实现接球小游戏
Apr 22 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 cookie中点号(句号)自动转为下划线问题
2014/10/21 PHP
php生成curl命令行的方法
2015/12/14 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
Laravel中正确地返回HTTP状态码方法示例
2019/09/10 PHP
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
2013/01/24 Javascript
jquery按回车提交数据的代码示例
2013/11/05 Javascript
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
图解Sublime Text3使用技巧
2015/12/21 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
2016/11/04 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
使用npm命令提示: 'npm' 不是内部或外部命令,也不是可运行的程序的处理方法
2020/05/14 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
javascript canvas封装动态时钟
2020/09/30 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
Python生成pdf文件的方法
2014/08/04 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
django中ImageField的使用详解
2020/12/21 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
英国儿童图书网站:Scholastic
2017/03/26 全球购物
介绍一下内联、左联、右联
2013/12/31 面试题
就业推荐表自我鉴定
2013/10/29 职场文书
医药工作岗位求职信分享
2013/12/31 职场文书
《司马光》教学反思
2016/02/22 职场文书