基于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正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
python实现随机漫步方法和原理
Jun 10 Python
这可能是最好玩的python GUI入门实例(推荐)
Jul 19 Python
python数据归一化及三种方法详解
Aug 06 Python
Python Celery多队列配置代码实例
Nov 22 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
Apr 16 Python
Python学习之路安装pycharm的教程详解
Jun 17 Python
python db类用法说明
Jul 07 Python
关于Python3爬虫利器Appium的安装步骤
Jul 29 Python
如何基于Django实现上下文章跳转
Sep 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
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
发现的以前不知道的函数
2006/09/19 Javascript
javascript 写的一个简单的timer
2009/07/30 Javascript
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
2011/08/23 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
分享网页检测摇一摇实例代码
2016/01/14 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
js事件触发操作实例分析
2019/06/21 Javascript
layui实现三级联动效果
2019/07/26 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
在Django中同时使用多个配置文件的方法
2015/07/22 Python
Python语言描述最大连续子序列和
2017/12/05 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
什么是Python包的循环导入
2020/09/08 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
UNIX文件名称有什么规定
2013/03/25 面试题
UNIX文件系统常用命令
2012/05/25 面试题
优秀社区干部事迹材料
2014/02/03 职场文书
自主招生教师推荐信
2014/05/10 职场文书
学校2014年度工作总结
2014/12/06 职场文书
秋季运动会开幕词
2015/01/28 职场文书
师德师风个人总结
2015/02/06 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server