基于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中的with...as用法介绍
May 28 Python
python用模块zlib压缩与解压字符串和文件的方法
Dec 16 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
Dec 20 Python
Numpy中转置transpose、T和swapaxes的实例讲解
Apr 17 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
Python爬虫运用正则表达式的方法和优缺点
Aug 25 Python
python3文件复制、延迟文件复制任务的实现方法
Sep 02 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
Feb 27 Python
python实现梯度下降法
Mar 24 Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 Python
python-for x in range的用法(注意要点、细节)
May 10 Python
浅谈python数据类型及其操作
May 25 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
牡丹941资料
2021/03/01 无线电
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
2016/02/19 Javascript
Javascript的比较汇总
2016/07/25 Javascript
javaScript如何跳出多重循环break、continue
2016/09/01 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
基于LayUI实现前端分页功能的方法
2017/07/22 Javascript
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
Python模拟三级菜单效果
2017/09/11 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
Django配置celery(非djcelery)执行异步任务和定时任务
2018/07/16 Python
Python面向对象之继承和组合用法实例分析
2018/08/27 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
如何基于python实现脚本加密
2019/12/28 Python
树莓派升级python的具体步骤
2020/07/05 Python
Python 解析xml文件的示例
2020/09/29 Python
Python ellipsis 的用法详解
2020/11/20 Python
物理系毕业生自荐信
2013/11/01 职场文书
技术副厂长岗位职责
2013/12/26 职场文书
《颐和园》教学反思
2014/02/26 职场文书
《日月潭》教学反思
2014/02/28 职场文书
放飞理想演讲稿
2014/09/09 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
2014年客服工作总结范文
2014/11/13 职场文书
医务人员医德考评自我评价
2015/03/03 职场文书
药品开票员岗位职责
2015/04/15 职场文书
小学总务工作总结
2015/08/13 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书