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获取标准北京时间的方法
Mar 24 Python
在Python中使用第三方模块的教程
Apr 27 Python
Python使用QQ邮箱发送Email的方法实例
Feb 09 Python
python开发之anaconda以及win7下安装gensim的方法
Jul 05 Python
如何实现Django Rest framework版本控制
Jul 25 Python
python爬虫selenium和phantomJs使用方法解析
Aug 08 Python
Python object类中的特殊方法代码讲解
Mar 06 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
Jun 08 Python
Python Process创建进程的2种方法详解
Jan 25 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 Python
Python线程池与GIL全局锁实现抽奖小案例
Apr 13 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运行时动态创建函数的方法
2015/03/16 PHP
php+html5实现无刷新图片上传教程
2016/01/22 PHP
PHP模块化安装教程
2016/06/01 PHP
php微信浏览器分享设置以及回调详解
2016/08/01 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
Phpstorm+Xdebug断点调试PHP的方法
2018/05/14 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
ECMAScript 基础知识
2007/06/29 Javascript
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
使用jquery动态加载js文件的方法
2014/12/24 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
2015/08/22 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
python实现通过pil模块对图片格式进行转换的方法
2015/03/24 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
django中ImageField的使用详解
2020/12/21 Python
css3动画过渡实现鼠标跟随导航效果
2018/02/08 HTML / CSS
静心口服夜广告词
2014/03/20 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
市政管理求职信范文
2014/05/07 职场文书
平遥古城导游词
2015/02/03 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript
如何更改Win11声音输出设备?Win11声音输出设备四种更改方法
2022/04/08 数码科技
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
2022/04/19 Java/Android
使用Python开发冰球小游戏
2022/04/30 Python