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中何种情况下需要使用断言
Apr 01 Python
简单谈谈Python流程控制语句
Dec 04 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
Python实现的读取/更改/写入xml文件操作示例
Aug 30 Python
对Python3之方法的覆盖与super函数详解
Jun 26 Python
Django的用户模块与权限系统的示例代码
Jul 24 Python
Python urlopen()和urlretrieve()用法解析
Jan 07 Python
以SQLite和PySqlite为例来学习Python DB API
Feb 05 Python
Python类和实例的属性机制原理详解
Mar 21 Python
使用OpenCV对车道进行实时检测的实现示例代码
Jun 19 Python
Python return语句如何实现结果返回调用
Oct 15 Python
Python之matplotlib绘制饼图
Apr 13 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
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
PHP实现即时输出、实时输出内容方法
2015/05/27 PHP
php检测文本的编码
2015/07/26 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
Prototype Template对象 学习
2009/07/19 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
jQuery ajax serialize()方法的使用以及常见问题解决
2013/01/27 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
2016/02/25 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
Python timeit模块的使用实践
2020/01/13 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
温泉秘密:Onsen Secret
2020/07/06 全球购物
高三政治教学反思
2014/02/06 职场文书
老师对学生的寄语
2014/04/09 职场文书
环卫工人节活动总结
2014/08/29 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
毕业证丢失证明范本
2014/09/20 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
详解如何用Python实现感知器算法
2021/06/18 Python
swagger如何返回map字段注释
2021/07/03 Java/Android
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL