python 实现图片修复(可用于去水印)


Posted in Python onNovember 19, 2020

在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以消除这些噪声呢?

答案是肯定的,依然是被我们用了无数次的OpenCV这款优秀的框架。

效果预览

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()

以上就是python 实现图片修复(可用于去水印)的详细内容,更多关于python 图片修复的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python Tkinter GUI编程入门介绍
Mar 10 Python
Python画图学习入门教程
Jul 01 Python
Python如何快速实现分布式任务
Jul 06 Python
Python有序字典简单实现方法示例
Sep 28 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
python2.7到3.x迁移指南
Feb 01 Python
python 对txt中每行内容进行批量替换的方法
Jul 11 Python
python 使用re.search()筛选后 选取部分结果的方法
Nov 28 Python
python matplotlib 画dataframe的时间序列图实例
Nov 20 Python
Python partial函数原理及用法解析
Dec 11 Python
Python 使用Opencv实现目标检测与识别的示例代码
Sep 08 Python
python绘图模块之利用turtle画图
Feb 12 Python
python 删除系统中的文件(按时间,大小,扩展名)
Nov 19 #Python
Python并发爬虫常用实现方法解析
Nov 19 #Python
python实现文件分片上传的接口自动化
Nov 19 #Python
Python类class参数self原理解析
Nov 19 #Python
Python爬虫如何破解JS加密的Cookie
Nov 19 #Python
python制作一个简单的gui 数据库查询界面
Nov 19 #Python
解决python3中os.popen()出错的问题
Nov 19 #Python
You might like
php简单浏览目录内容的实现代码
2013/06/07 PHP
深入PHP数据加密详解
2013/06/18 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
js播放wav文件(源码)
2013/04/22 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
JS小游戏之仙剑翻牌源码详解
2014/09/25 Javascript
js获取当前日期前七天的方法
2015/02/28 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
2019/11/09 Javascript
详解Python中的正则表达式的用法
2015/04/09 Python
详解python中asyncio模块
2018/03/03 Python
python2和python3的输入和输出区别介绍
2018/11/20 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
python with (as)语句实例详解
2020/02/04 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
python生成任意频率正弦波方式
2020/02/25 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
税务会计岗位职责
2014/02/18 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
火烧圆明园观后感
2015/06/03 职场文书
springboot+VUE实现登录注册
2021/05/27 Vue.js