本文分享内容来自图书《学习OpenCV 4:基于Python的算法实战》,该书内容如下:
第1章 OpenCV快速入门;
第2章 图像读写模块imgcodecs;
第3章 核心库模块core;
第4章 图像处理模块imgproc(一);
第5章 图像处理模块imgproc(二);
第6章 可视化模块highgui;
第7章 视频处理模块videoio;
第8章 视频分析模块video;
第9章 照片处理模块photo;
第10章 2D特征模块features2d;
第11章 相机标定与三维重建模块calib3d;
第12章 传统目标检测模块objdetect;
第13章 机器学习模块ml;
第14章 深度神经网络模块dnn
欢迎关注图书《深度学习计算机视觉实战》与《学习OpenCV4:基于Python的算法实战》。
图像金字塔是来自同一图像的不同分辨率的图像的集合,在图像缩放或图像分割中有很多应用。图像金字塔是通过采样完成的,下采样形成高斯金字塔,上采样形成拉普拉斯金字塔。
5.6.1 案例55:高斯金字塔
OpenCV中提供了生成高斯金字塔的函数pyrDown,函数的定义如下:
dst = pyrDown(src, dst=None, dstsize=None, borderType=None)
参数说明如下:
src,输入图像;
dst,输出图像(返回值);
dstsize,输出图像尺寸;
borderType,边界模式,由BorderTypes定义(见3.4.5节)。
本案例使用的输入图像如图3.10所示,下采样一次的案例代码如下:
import cv2
src = cv2.imread("src.jpg")
#图像下采样
pyrdown1 = cv2.pyrDown(src)
#图像显示
cv2.imshow("src", src)
cv2.imshow("pyrdown1", pyrdown1)
cv2.waitKey(0)
cv2.destroyAllWindows()
执行一次下采样的结果如图5.18所示。
图5.18
进行三下采样的案例代码如下:
import cv2
src = cv2.imread("src.jpg")
#三次下采样
pyrdown1 = cv2.pyrDown(src)
pyrdown2 = cv2.pyrDown(pyrdown1)
pyrdown3 = cv2.pyrDown(pyrdown2)
#图像显示
cv2.imshow("src", src)
cv2.imshow("pyrdown1", pyrdown1)
cv2.imshow("pyrdown2", pyrdown2)
cv2.imshow("pyrdown3", pyrdown3)
cv2.waitKey(0)
cv2.destroyAllWindows()
执行三次采样得到的高斯图像金字塔如图5.19所示。
图5.19
5.6.2 案例56:拉普拉斯金字塔
OpenCV中提供了生成拉普拉斯金字塔的函数pyrUp,函数的定义如下:
dst = pyrUp(src, dst=None, dstsize=None, borderType=None)
参数说明如下:
src,输入图像;
dst,输出图像(返回值);
dstsize,输出图像尺寸;
borderType,边界模式,由BorderTypes定义(见3.4.5节)。
3次上采样构建拉普拉斯金字塔的案例代码如下:
import cv2
src = cv2.imread("src_pyrup.jpg")
#三次上采样
pyrup1 = cv2.pyrUp(src)
pyrup2 = cv2.pyrUp(pyrup1)
pyrup3 = cv2.pyrUp(pyrup2)
#图像显示
cv2.imshow("src", src)
cv2.imshow("pyrup1", pyrup1)
cv2.imshow("pyrup2", pyrup2)
cv2.imshow("pyrup3", pyrup3)
cv2.waitKey(0)
cv2.destroyAllWindows()
执行三次上采样形成的拉普拉斯金字塔如图5.20所示。
图5.20
版权声明:本文为博主计算机视觉与OpenCV原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/lxiao428/article/details/123220983