基于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之集成开发环境(IDE)
Sep 12 Python
Python中函数参数设置及使用的学习笔记
May 03 Python
Python numpy 常用函数总结
Dec 07 Python
Python socket实现的简单通信功能示例
Aug 21 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
Dec 05 Python
python实现字符串加密成纯数字
Mar 19 Python
Python生成MD5值的两种方法实例分析
Apr 26 Python
Python 中pandas索引切片读取数据缺失数据处理问题
Oct 09 Python
Python-Flask:动态创建表的示例详解
Nov 22 Python
matplotlib quiver箭图绘制案例
Apr 17 Python
Pytorch 使用CNN图像分类的实现
Jun 16 Python
Python selenium如何打包静态网页并下载
Aug 12 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实现bitmap位图排序与求交集的方法
2016/07/28 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
基于jquery实现的省市区级联无ajax
2013/09/24 Javascript
js网页右下角提示框实例
2014/10/14 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
详解webpack介绍&安装&常用命令
2017/06/29 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
js实现聊天对话框
2020/02/08 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
[01:52]2020年DOTA2 TI10夏季活动预告片
2020/07/15 DOTA
Python基于pygame实现的弹力球效果(附源码)
2015/11/11 Python
机器学习之KNN算法原理及Python实现方法详解
2018/07/09 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
Python 实现自动登录+点击+滑动验证功能
2020/06/10 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
python 检测图片是否有马赛克
2020/12/01 Python
澳大利亚首个在线预订旅游网站:Wotif
2017/07/19 全球购物
个人自荐信
2013/12/05 职场文书
行政管理毕业生自荐信
2014/02/24 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
班主任经验交流会主持词
2014/04/01 职场文书
市场营销调查计划书
2014/05/02 职场文书
医师定期考核实施方案
2014/05/07 职场文书
小学生田径运动会广播稿
2014/09/11 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
2014年服务员工作总结
2014/11/18 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
2019数学教师下学期工作总结
2019/06/27 职场文书
总结Python使用过程中的bug
2021/06/18 Python