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简单定义与使用字典dict的方法示例
Jul 25 Python
python里使用正则的findall函数的实例详解
Oct 19 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
Jan 30 Python
python实现n个数中选出m个数的方法
Nov 13 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 Python
python正则-re的用法详解
Jul 28 Python
python图形绘制奥运五环实例讲解
Sep 14 Python
python中删除某个元素的方法解析
Nov 05 Python
解决os.path.isdir() 判断文件夹却返回false的问题
Nov 29 Python
python计算Content-MD5并获取文件的Content-MD5值方式
Apr 03 Python
opencv 图像腐蚀和图像膨胀的实现
Jul 07 Python
python如何正确使用yield
May 21 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中pack、unpack的详细用法
2018/03/12 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
我的javascript 函数链之演变
2011/04/07 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
Javascript变量的作用域和作用域链详解
2015/04/02 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
简介alert()与console.log()的不同
2015/08/26 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
angularjs中ng-bind-html的用法总结
2017/05/23 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
python比较2个xml内容的方法
2015/05/11 Python
简单讲解Python中的字符串与字符串的输入输出
2016/03/13 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
python中实现数组和列表读取一列的方法
2018/04/03 Python
使用python实现语音文件的特征提取方法
2019/01/09 Python
python远程邮件控制电脑升级版
2019/05/23 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
Python getattr()函数使用方法代码实例
2020/08/10 Python
python 解决selenium 中的 .clear()方法失效问题
2020/09/01 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
德国运动鞋网上商店:Afew Store
2018/01/05 全球购物
轻化专业学生实习自我鉴定
2013/09/20 职场文书
弘扬职业精神演讲稿
2014/03/20 职场文书
事业单位绩效考核实施方案
2014/03/27 职场文书
辞职信模板(中英文版)
2015/02/27 职场文书
工作简历自我评价
2015/03/11 职场文书
大学迎新生欢迎词
2015/09/29 职场文书
高中生物教学反思
2016/02/20 职场文书
springboot+zookeeper实现分布式锁
2022/03/21 Java/Android