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 相关文章推荐
Python中使用ElementTree解析XML示例
Jun 02 Python
使用Python求解最大公约数的实现方法
Aug 20 Python
Python实现自定义函数的5种常见形式分析
Jun 16 Python
Python列表(List)知识点总结
Feb 18 Python
Python3数字求和的实例
Feb 19 Python
用pycharm开发django项目示例代码
Jun 13 Python
pandas取出重复数据的方法
Jul 04 Python
使用Python自动生成HTML的方法示例
Aug 06 Python
解决echarts中饼图标签重叠的问题
May 16 Python
python3.7添加dlib模块的方法
Jul 01 Python
python+flask编写一个简单的登录接口
Nov 13 Python
Python+Appium实现自动抢微信红包
May 21 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
php实现只保留mysql中最新1000条记录
2015/06/18 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
node.js 和HTML5开发本地桌面应用程序
2016/12/13 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
python装饰器decorator介绍
2014/11/21 Python
python实现提取百度搜索结果的方法
2015/05/19 Python
python处理大数字的方法
2015/05/27 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
Python3 修改默认环境的方法
2019/02/16 Python
小结Python的反射机制
2020/09/28 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
DERMAdoctor官网:美国著名皮肤护理品牌
2019/07/06 全球购物
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
Java servlet面试题
2012/03/04 面试题
求职者应聘的自我评价
2013/10/16 职场文书
总经理助理岗位职责
2013/11/08 职场文书
巴西世界杯32强口号
2014/06/05 职场文书
单位委托函范文
2015/01/29 职场文书
新闻稿件写作技巧
2015/07/18 职场文书
会计实训总结范文
2015/08/03 职场文书
2016国培研修心得体会
2016/01/08 职场文书
小程序实现筛子抽奖
2021/05/26 Javascript
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL