基于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 28 Python
python django 访问静态文件出现404或500错误
Jan 20 Python
基于循环神经网络(RNN)的古诗生成器
Mar 26 Python
python实现守护进程、守护线程、守护非守护并行
May 05 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
pycharm新建一个python工程步骤
Jul 16 Python
Django CSRF跨站请求伪造防护过程解析
Jul 31 Python
python实发邮件实例详解
Nov 11 Python
python利用dlib获取人脸的68个landmark
Nov 27 Python
Python实现把多维数组展开成DataFrame
Nov 30 Python
Pytorch 多维数组运算过程的索引处理方式
Dec 27 Python
聊聊pytorch测试的时候为何要加上model.eval()
May 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
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
php对象工厂类完整示例
2018/08/09 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
JS查看对象功能代码
2008/04/25 Javascript
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
2019/08/21 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
2019/09/14 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
用python写一个windows下的定时关机脚本(推荐)
2017/03/21 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
2020/12/16 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
10分钟理解CSS3 Grid布局
2018/12/20 HTML / CSS
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
酒店保安员岗位职责
2014/01/31 职场文书
财务总监管理职责范文
2014/03/09 职场文书
餐饮采购员岗位职责
2014/03/15 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
python实现简单区块链结构
2021/04/25 Python
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python
各种货币符号快捷输入
2022/02/17 杂记
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技