函数原型
// 向上采样 void pyrUp( InputArray src, OutputArray dst, const Size& dstsize = Size(), int borderType = BORDER_DEFAULT ); // 向下采样 void pyrDown( InputArray src, OutputArray dst, const Size& dstsize = Size(), int borderType = BORDER_DEFAULT );
参数说明
- InputArray类型的src,输入图像。
- OutputArray类型的dst,输出图像。
- const Size&类型的dstsize,输出图像尺寸,一般默认即可。
- 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",0); cv::Mat th1,th2; int row = src.rows; int col = src.cols; // 向下采样。高斯平滑+缩小尺寸 pyrDown(src, th1, Size(0, 0), 4); // 向上采样。放大尺寸+高斯平滑 pyrUp(th1, th2, Size(0, 0), 4); imshow("original", src); imshow("pyrDown", th1); imshow("pyrUp", th2); waitKey(0); return 0; }
测试效果
向下采样会先高斯平滑再缩小尺寸,对向下采样后的图进行向上采样,恢复到原来大小,但是因为经历了两次高斯模糊,所以采样后的图必然相较原图有微小程度的失真~
如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!