基于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闭包实现计数器的方法
May 05 Python
详解Python验证码识别
Jan 25 Python
Python将多个excel表格合并为一个表格
Feb 22 Python
python查看模块安装位置的方法
Oct 16 Python
python实现BP神经网络回归预测模型
Aug 09 Python
安装Pycharm2019以及配置anconda教程的方法步骤
Nov 11 Python
Python 过滤错误log并导出的实例
Dec 26 Python
解决Tensorflow 内存泄露问题
Feb 05 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 Python
解决Python图形界面中设置尺寸的问题
Mar 05 Python
Python3爬虫中关于Ajax分析方法的总结
Jul 10 Python
python简单实现插入排序实例代码
Dec 16 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边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
JavaScript中String.match()方法的使用详解
2015/06/06 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
2016/01/05 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
jQuery+ajax实现文件上传功能
2020/12/22 jQuery
基于element-ui封装表单金额输入框的方法示例
2021/01/06 Javascript
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
Python调用C语言的方法【基于ctypes模块】
2018/01/22 Python
Python requests发送post请求的一些疑点
2018/05/20 Python
Python基于SMTP协议实现发送邮件功能详解
2018/08/14 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
Python自定义一个异常类的方法
2019/06/27 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
Python 微信公众号文章爬取的示例代码
2020/11/30 Python
泰国网上购物:Shopee泰国
2018/09/14 全球购物
我爱读书演讲稿
2014/05/07 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
村党建工作汇报材料
2014/11/02 职场文书
研究生导师评语
2014/12/31 职场文书
护士个人年度总结范文
2015/02/13 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
2015教师节通讯稿
2015/07/20 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技
vue 实现弹窗关闭后刷新效果
2022/04/08 Vue.js