Opencv学习——图像金字塔与尺寸调整

1、尺寸调整:resize()函数

void resize( InputArray src, OutputArray dst,
                          Size dsize, double fx = 0, double fy = 0,
                          int interpolation = INTER_LINEAR );
src输入图像
dst输出图像
dsize输出图像的大小,如果未指定,用fx,fy来计算
fx水平轴的缩放系数
fy垂直轴的缩放系数
interpolation插值方式,默认为INTER_LINEAR(线性插值)
INTER_NEAREST最近邻插值
INTER_LINEAR线性插值(默认值)(放大图像时推荐
INTER_AREA区域插值(利用像素区域关系)(缩小图像时推荐
INTER_CUBIC三次样条插值
INTER_LANCZOS4lanczos插值

两种调用范畴:

方式一:

Mat dst = Mat::zeros(512, 512, CV_8UC3);
Mat src = imread("1.jpg");
resize(src,dst,dst.size());

显式指定dsize=dst.size();fx和fy会自己计算出来,不用额外指定。

方式二:

Mat dat;
Mat src = imread("1.jpg");
resize(src, dst, Size(), 0.5, 0.5);

指定fx,fy,函数计算出目标图像的大小。

2、向上采样:pyrUp()函数(放大一张图片)

 

void pyrUp( InputArray src, OutputArray dst,
                         const Size& dstsize = Size(), int borderType = BORDER_DEFAULT );
src输入图像
dst输出图像
dstsize输出图像大小;有默认值Size(src.cols*2,src.rows*2)来进行计算
borderType边界模式

3、向下采样:pyDown()函数(缩小一张图片)

src输入图像
dst输出图像
dstsize输出图像大小;有默认值Size(src.cols/2,src.rows/2)来进行计算
borderType边界模式

 

综合示例:

#include<opencv2/opencv.hpp>
#include<opencv2/highgui.hpp>
using namespace cv;
int main()
{
	//Mat dst = Mat::zeros(512, 512, CV_8UC3);
	//Mat src = imread("F:/3.jpg");
	//resize(src,dst,dst.size());

	Mat dst1,dst2,dst3;
	Mat src = imread("F:/3.jpg");
	resize(src, dst1, Size(), 2, 2);

	pyrUp(src, dst2, Size(src.cols*2,src.rows*2));
	pyrDown(dst2, dst3);

	imshow("dst1",dst1);
	imshow("dst2", dst2);
	imshow("dst3", dst3);
	waitKey(0);
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值