天天看点

【Python+OpenCV入门学习】十七、图像金字塔

本篇文章介绍图像金字塔处理,某些时候我们需要一组不同分辨率大小的相同图像,这一组图像按金字塔方式堆叠,底部具有最高分辨率图像而顶部具有最低分辨率图像。

主要学习cv.pyrUp(),cv.pyrDown()函数的使用。

环境:Windows 7(64)   Python 3.6    OpenCV 3.4.2

一、图像金字塔

1.1 相关函数介绍

pyrUp()函数形式如下:

dst = cv.pyrUp( src[, dst[, dstsize[, borderType]]] )
           

功能:图像金字塔向上采样,图像尺寸加倍(向上是针对尺寸而言的,刚好和金字塔方向相反,注意别搞混了)。

参数:

src:输入图像。

dst:输出图像。

dstsize:输出图像大小

borderType:边界填充类型

pyrDown()函数形式如下:

dst	= cv.pyrDown( src[, dst[, dstsize[, borderType]]] )
           

功能:图像金字塔向下采样,图像尺寸减半(向下是针对尺寸而言的,刚好和金字塔方向相反,注意别搞混了)。

参数:

src:输入图像。

dst:输出图像。

dstsize:输出图像大小

borderType:边界填充类型

1.2 编程测试

先对原始图像进行向下金字塔,然后对其进行向上金字塔,代码如下:

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

img = cv.imread('1.png')

#向下金字塔
DstpyrDown = cv.pyrDown(img)
#向上金字塔
DstpyrUp = cv.pyrUp(DstpyrDown)

#显示
cv.imshow("src img", img)
cv.imshow("pyrDown", DstpyrDown)
cv.imshow("DstpyrUp", DstpyrUp)
           

代码运行结果图如下所示。可以看出对原始图像进行向下采样,再向上采样后的图像相较于原始图像来说,变模糊了,这是因为对图像向下采样会丢失信息。此外可知两种操作不是互逆操作。

【Python+OpenCV入门学习】十七、图像金字塔