基于python的图片修复程序(实现水印去除)


Posted in Python onJune 04, 2018

图片修复程序-可用于水印去除

在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以消除这些噪声呢?

答案是肯定的,依然是被我们用了无数次的OpenCV这款优秀的框架。

OpenCV

目前,OpenCV逐步成为一个通用的基础研究和产品开发平台。OpenCV这一名称包含了Open和 Computer Vision两者的意思。实际上,Open指Open Source(开源,即开放源代码),Computer Vision则指计算机视觉。OpenCV的发展对软件的开发具有重要影响。想要了解更多的话大家可以参考这篇文章:https://3water.com/article/127911.htm

效果预览

基于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()

图片扩展与腐蚀更多资料:http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_morphological_ops/py_morphological_ops.html

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
从零学python系列之新版本导入httplib模块报ImportError解决方案
May 23 Python
python访问系统环境变量的方法
Apr 29 Python
pymongo为mongodb数据库添加索引的方法
May 11 Python
Python实现控制台输入密码的方法
May 29 Python
Python中元组,列表,字典的区别
May 21 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
Mar 14 Python
Python中@property的理解和使用示例
Jun 11 Python
python正则表达式re.match()匹配多个字符方法的实现
Jan 27 Python
详解matplotlib绘图样式(style)初探
Feb 03 Python
python批量提取图片信息并保存的实现
Feb 05 Python
python基础入门之字典和集合
Jun 13 Python
python实现requests发送/上传多个文件的示例
Jun 04 #Python
python3写的简单本地文件上传服务器实例
Jun 04 #Python
Python装饰器的执行过程实例分析
Jun 04 #Python
使用Python监控文件内容变化代码实例
Jun 04 #Python
Python操作mongodb的9个步骤
Jun 04 #Python
Python中property函数用法实例分析
Jun 04 #Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 #Python
You might like
收集的php编写大型网站问题集
2007/03/06 PHP
php self,$this,const,static,->的使用
2009/10/22 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
详解json在php中的应用
2018/09/30 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
新手学习前端之js模仿淘宝主页网站
2016/10/31 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
浅谈js闭包理解
2019/04/01 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
JS实现鼠标移动拖尾
2020/12/27 Javascript
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
详解Python中的元组与逻辑运算符
2015/10/13 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
Python采用Django开发自己的博客系统
2020/09/29 Python
wxPython实现列表增删改查功能
2019/11/19 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
Python爬取网页信息的示例
2020/09/24 Python
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
欧舒丹比利时官网:L’OCCITANE比利时
2017/04/25 全球购物
J2EE中常用的名词进行解释
2015/11/09 面试题
软件工程专业推荐信
2013/10/28 职场文书
前台文员岗位职责
2013/12/28 职场文书
yy结婚证婚词
2014/01/10 职场文书
2014年设备管理工作总结
2014/11/26 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers
Oracle使用别名的好处
2022/04/19 Oracle