基于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函数编程的一些特性
Apr 13 Python
Python排序搜索基本算法之选择排序实例分析
Dec 09 Python
把csv文件转化为数组及数组的切片方法
Jul 04 Python
解决pycharm运行出错,代码正确结果不显示的问题
Nov 30 Python
Python迭代器模块itertools使用原理解析
Dec 11 Python
tensorflow 限制显存大小的实现
Feb 03 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
Mar 30 Python
tensorflow实现从.ckpt文件中读取任意变量
May 26 Python
VSCODE配置Markdown及Markdown基础语法详解
Jan 19 Python
Python中zipfile压缩包模块的使用
May 14 Python
基于tensorflow权重文件的解读
May 26 Python
Python Django项目和应用的创建详解
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学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
PHP修改session_id示例代码
2014/01/08 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
destoon数据库表说明汇总
2014/07/15 PHP
PHP SOCKET编程详解
2015/05/22 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
原生js实现给指定元素的后面追加内容
2013/04/10 Javascript
你必须知道的Javascript知识点之"深入理解作用域链"的介绍
2013/04/23 Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
2013/05/17 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
非常实用的vue导航钩子
2017/03/20 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
2019/06/10 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
详解Python文件修改的两种方式
2019/08/22 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
入学申请自荐信范文
2014/02/26 职场文书
广告语设计及教案
2014/03/21 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
项目建议书
2015/02/04 职场文书
机器人瓦力观后感
2015/06/12 职场文书