函数原型
void buildPyramid( InputArray src, OutputArrayOfArrays dst, int maxlevel, int borderType = BORDER_DEFAULT );
参数说明
- InputArray类型的src,输入图像。
- OutputArrayOfArrays类型的dst,输出图像集合,一般为容器。
- int类型的maxlevel,图像金字塔层级。
- int类型的borderType,推断图像边缘像素的边界模式。
测试代码
#include <iostream> #include "opencv2/core.hpp" #include "opencv2/highgui.hpp" #include "opencv2/imgproc.hpp" using namespace cv; using namespace std; int main() { cv::Mat src = imread("test.jpg"); vector<cv::Mat> ths; int row = src.rows; int col = src.cols; buildPyramid(src, ths, 3, 4); imshow("original", src); imshow("level 0", ths[0]); imshow("level 1", ths[1]); imshow("level 2", ths[2]); imshow("level 3", ths[3]); waitKey(0); return 0; }
测试效果
图1 图像金字塔
图像金字塔其实就是多次向下采样,原图为容器的第一个图,也就是0;若level为4,后面还有4张不同缩小程度的图,其尺寸为上一级图像的一半~
如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!