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实现的金山快盘的签到程序
Jan 17 Python
在Python3中使用asyncio库进行快速数据抓取的教程
Apr 02 Python
python获取外网ip地址的方法总结
Jul 02 Python
200 行python 代码实现 2048 游戏
Jan 12 Python
TensorFlow实现非线性支持向量机的实现方法
Apr 28 Python
python字符串替换第一个字符串的方法
Jun 26 Python
PyTorch之图像和Tensor填充的实例
Aug 18 Python
pygame实现贪吃蛇游戏(上)
Oct 29 Python
python之列表推导式的用法
Nov 29 Python
Python文件操作函数用法实例详解
Dec 24 Python
Pytorch中实现只导入部分模型参数的方式
Jan 02 Python
PyCharm最新激活码PyCharm2020.2.3有效
Nov 18 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 ci框架验证码实例分析
2013/06/26 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
2017/07/31 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
JavaScript中的pow()方法使用详解
2015/06/15 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
EasyUI Combobox设置默认值 获取text的方法
2016/11/28 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
vue项目出现页面空白的解决方案
2019/10/31 Javascript
原生js实现随机点名功能
2019/11/05 Javascript
JS array数组检测方式解析
2020/05/19 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
[01:19:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第二局
2016/03/05 DOTA
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
Django视图和URL配置详解
2018/01/31 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
django settings.py 配置文件及介绍
2019/07/15 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
荷兰皇家航空公司中国官网:KLM中国
2017/12/13 全球购物
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
文秘专业应届生求职信范文
2013/11/14 职场文书
教师求职信
2014/06/17 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
群众路线个人整改方案
2014/10/25 职场文书
大连星海广场导游词
2015/02/10 职场文书
总经理年会致辞
2015/07/29 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
详解Python flask的前后端交互
2022/03/31 Python
Python采集股票数据并制作可视化柱状图
2022/04/04 Python