基于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中使用pyhook实现键盘监控的例子
Jul 18 Python
python通过加号运算符操作列表的方法
Jul 28 Python
Python如何快速实现分布式任务
Jul 06 Python
pycharm远程调试openstack的图文教程
Nov 21 Python
python的继承知识点总结
Dec 10 Python
Python读取xlsx文件的实现方法
Jul 04 Python
Python matplotlib绘制饼状图功能示例
Sep 10 Python
python序列化与数据持久化实例详解
Dec 20 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
Feb 11 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
Python 必须了解的5种高级特征
Sep 10 Python
使用Python画了一棵圣诞树的实例代码
Nov 27 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图片上传类带图片显示
2006/11/25 PHP
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
浅谈php和.net的区别
2014/09/28 PHP
php里array_work用法实例分析
2015/07/13 PHP
javascript URL锚点取值方法
2009/02/25 Javascript
jQuery 使用手册(三)
2009/09/23 Javascript
简约JS日历控件 实例代码
2013/07/12 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
深入理解Javascript中的valueOf与toString
2017/01/04 Javascript
js实现截图保存图片功能的代码示例
2017/02/16 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
vue内置指令详解
2018/04/03 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
Python读写ini文件的方法
2015/05/28 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
便捷提取python导入包的属性方法
2018/10/15 Python
详解python编译器和解释器的区别
2019/06/24 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
python3.6中@property装饰器的使用方法示例
2019/08/17 Python
python中几种自动微分库解析
2019/08/29 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
大学生就业自我鉴定
2013/10/26 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
大连星海广场导游词
2015/02/10 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
Python函数式编程中itertools模块详解
2021/09/15 Python
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技