python 用opencv实现图像修复和图像金字塔


Posted in Python onNovember 27, 2020

我们将学习如何通过一种称为修复的方法去除旧照片中的小噪音,笔画等。基本思路很简单:用相邻像素替换那些坏标记,使其看起来像邻域。

cv2.inpaint()

  • cv2.INPAINT_TELEA
  • cv2.INPAINT_NS
import numpy as np
import cv2 as cv

img = cv.imread('messi_2.jpg')
mask = cv.imread('mask2.png',0)

dst = cv.inpaint(img,mask,3,cv.INPAINT_TELEA)

cv.imshow('dst',dst)
cv.waitKey(0)
cv.destroyAllWindows()

第一张图显示降级输入,第二个图像是面具,第三个图像是第一个算法的结果,最后一个图像是第二个算法的结果。

python 用opencv实现图像修复和图像金字塔

图像金字塔

通常,我们曾经使用恒定大小的图像.但在某些情况下,我们需要使用不同分辨率的(相同)图像.例如,在搜索图像中的某些内容时,如脸部,我们不确定该对象在所述图像中的大小.

具有不同分辨率的图像被称为图像金字塔(因为当它们保持在堆叠中,底部具有最高分辨率图像而顶部具有最低分辨率图像时,它看起来像金字塔).

图像金字塔有两种:

  1. 高斯金字塔和
  2. 拉普拉斯金字塔

高斯金字塔的顶部是通过将底部图像中的连续的行和列去除得到的.顶部图像中的每个像素值等于下一层图像中 5 个像素的高斯加权平均值.这样操作一次一个 MxN 的图像就变成了一个 M/2xN/2 的图像。所以这幅图像的面积就变为原来图像面积的四分之一.这被称为an Octave(一个八度)。连续进行这样的操作就会得到一个分辨率不断下降的图像金字塔.

函数cv2.pyrDown()从一个高分辨率大尺寸的图像向上构建一个金子塔 (尺寸变小,分辨率降低).
代码:

import cv2

img = cv2.imread('img.jpg')

lower_reso = cv2.pyrDown(img)

cv2.imshow('src',img)
cv2.imshow('HigherReso',lower_reso)

cv2.waitKey()

python 用opencv实现图像修复和图像金字塔

继续使用函数cv2.pyrUp()从一个低分辨率小尺寸的图像向下构建一个金子塔(尺寸变大,但分辨率不会增加)
代码:

import cv2

img = cv2.imread('img.jpg')

lower_reso = cv2.pyrDown(img)
higher_reso2 = cv2.pyrUp(lower_reso)

cv2.imshow('show',higher_reso2)

cv2.waitKey()

python 用opencv实现图像修复和图像金字塔

NOTE:

当用 cv2.pyrDown(),图像的分辨率就会降低,信息就会被丢失.如果先cv2.pyrDown()产生的中间图像再使用函数cv2.pyrUp()得到图像,与原图像相比分辨率差了很多.
可以修改代码:

import cv2

img = cv2.imread('img.jpg')

higher_reso2 = cv2.pyrUp(img)
lower_reso = cv2.pyrDown(higher_reso2)


cv2.imshow('show',lower_reso)

cv2.waitKey()

拉普拉斯金字塔由高斯金字塔形成,大部分元素都是零,用于图像压缩.
代码:

import cv2

img = cv2.imread('img.jpg')
img = cv2.Canny(img, 100, 200)

higher_reso2 = cv2.pyrUp(img)
lower_reso = cv2.pyrDown(higher_reso2)

cv2.imshow('src',img)
cv2.imshow('higher_reso2',higher_reso2)
cv2.imshow('lower_reso',lower_reso)

cv2.waitKey()

python 用opencv实现图像修复和图像金字塔

以上就是python 用opencv实现图像修复和图像金字塔的详细内容,更多关于python 图像修复和图像金字塔的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
使用Python的Tornado框架实现一个Web端图书展示页面
Jul 11 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
基于python生成器封装的协程类
Mar 20 Python
Python3.5内置模块之random模块用法实例分析
Apr 26 Python
python global关键字的用法详解
Sep 05 Python
Python 获取命令行参数内容及参数个数的实例
Dec 20 Python
Python sep参数使用方法详解
Feb 12 Python
Python中使用filter过滤列表的一个小技巧分享
May 02 Python
Python OrderedDict字典排序方法详解
May 21 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
Jan 12 Python
Python3的进程和线程你了解吗
Mar 16 Python
Python函数调用追踪实现代码
Nov 27 #Python
Numpy中np.max的用法及np.maximum区别
Nov 27 #Python
python 实现aes256加密
Nov 27 #Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 #Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
Nov 27 #Python
Python基于template实现字符串替换
Nov 27 #Python
使用Python画了一棵圣诞树的实例代码
Nov 27 #Python
You might like
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
js冒泡法和数组转换成字符串示例代码
2013/08/14 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
深入理解JavaScript程序中内存泄漏
2016/03/17 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
ES6学习教程之Map的常用方法总结
2017/08/03 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
团队队名口号大全
2014/06/06 职场文书
先进单位申报材料
2014/12/25 职场文书
投标售后服务承诺书
2015/04/29 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python