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下使用Txt2Html实现网页过滤代理的教程
Apr 11 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
Mar 21 Python
python使用psutil模块获取系统状态
Aug 27 Python
浅谈Python中的可变对象和不可变对象
Jul 07 Python
Python通用函数实现数组计算的方法
Jun 13 Python
python的scipy实现插值的示例代码
Nov 12 Python
手把手教你进行Python虚拟环境配置教程
Feb 03 Python
Django Form常用功能及代码示例
Oct 13 Python
python 用递归实现通用爬虫解析器
Apr 16 Python
python numpy中setdiff1d的用法说明
Apr 22 Python
Python实现简繁体转换
Jun 07 Python
python基于turtle绘制几何图形
Jun 15 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下使用SMTP发邮件的代码
2008/01/10 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
thinkphp跨库操作的简单代码实例
2016/09/22 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
python提示No module named images的解决方法
2014/09/29 Python
使用Python绘制图表大全总结
2017/02/11 Python
windows下Python实现将pdf文件转化为png格式图片的方法
2017/07/21 Python
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
python如何实现内容写在图片上
2018/03/23 Python
Python应用库大全总结
2018/05/30 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
Python2与Python3的区别点整理
2019/12/12 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
Java的类与C++的类有什么不同
2014/01/18 面试题
电子技术专业中专生的自我评价
2013/12/17 职场文书
货车司机岗位职责
2014/03/18 职场文书
经济信息系毕业生自荐信
2014/06/02 职场文书
HR求职自荐信范文
2014/06/21 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android