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抓取百度首页的方法
May 19 Python
Python用zip函数同时遍历多个迭代器示例详解
Nov 14 Python
Python实现字符串格式化的方法小结
Feb 20 Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
ActiveMQ:使用Python访问ActiveMQ的方法
Jan 30 Python
python实现爬山算法的思路详解
Apr 09 Python
django框架基于模板 生成 excel(xls) 文件操作示例
Jun 19 Python
pycharm2020.1.2永久破解激活教程,实测有效
Oct 29 Python
Python WebSocket长连接心跳与短连接的示例
Nov 24 Python
详解Python+OpenCV绘制灰度直方图
Mar 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
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
xss文件页面内容读取(解决)
2010/11/28 Javascript
JQuery切换显示的效果实例代码
2013/02/27 Javascript
json数据的列循环示例
2013/09/06 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
2016/01/27 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
2016/05/30 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
Python subprocess模块常见用法分析
2018/06/12 Python
django admin.py 外键,反向查询的实例
2019/07/26 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
python speech模块的使用方法
2020/09/09 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
Myprotein台湾官方网站:全球领先的运动营养品牌
2018/12/10 全球购物
总经理助理职责
2014/02/04 职场文书
高中学生评语大全
2014/04/25 职场文书
党员先锋岗事迹材料
2014/05/08 职场文书
经典禁毒标语
2014/06/16 职场文书
幼师求职信
2014/06/23 职场文书
高中国旗下的演讲稿
2014/08/28 职场文书
个人催款函范文
2015/06/23 职场文书
解除处分决定书
2015/06/25 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript
浅析Python中的随机采样和概率分布
2021/12/06 Python