基于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实现的二维码生成小软件
Jul 11 Python
Eclipse中Python开发环境搭建简单教程
Mar 23 Python
Python读写txt文本文件的操作方法全解析
Jun 26 Python
Python正规则表达式学习指南
Aug 02 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
Nov 29 Python
Python简单过滤字母和数字的方法小结
Jan 09 Python
浅谈keras 的抽象后端(from keras import backend as K)
Jun 16 Python
Python3.7安装pyaudio教程解析
Jul 24 Python
Vs Code中8个好用的python 扩展插件
Oct 12 Python
MATLAB 如何求取离散点的曲率最大值
Apr 16 Python
Python实现Telnet自动连接检测密码的示例
Apr 16 Python
Python中的socket网络模块介绍
Jul 23 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 n个不重复的随机数生成代码
2009/06/23 PHP
PHP 循环删除无限分类子节点的实现代码
2013/06/21 PHP
php统计文章排行示例
2014/03/04 PHP
浅析php工厂模式
2014/11/25 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
海量经典的jQuery插件集合
2010/01/12 Javascript
Extjs 几个方法的讨论
2010/01/28 Javascript
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
jQuery无缝轮播图代码
2016/12/22 Javascript
从对象列表中获取一个对象的方法,依据关键字和值
2017/09/20 Javascript
js传递数组参数到后台controller的方法
2018/03/29 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
Python实现PS图像抽象画风效果的方法
2018/01/23 Python
OpenCV搞定腾讯滑块验证码的实现代码
2019/05/18 Python
Python中flatten( ),matrix.A用法说明
2020/07/05 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
马来西亚网上购物:Youbeli
2018/03/30 全球购物
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
2013/08/04 面试题
写给爸爸的道歉信
2014/01/15 职场文书
11月升旗仪式讲话稿
2014/02/15 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
小学生作文评语集锦
2014/12/25 职场文书
美丽心灵观后感
2015/06/01 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
党风廉政建设心得体会
2019/05/21 职场文书
html实现弹窗的实例
2021/06/09 HTML / CSS
解析MySQL binlog
2021/06/11 MySQL
实例详解Python的进程,线程和协程
2022/03/13 Python
MySQL主从切换的超详细步骤
2022/06/28 MySQL