OpenCV:图像缩放操作resize,pryUp,pryDown
来源:网络收集 点击: 时间:2024-07-21resize()函数:
可以将原图像精确的转化为指定尺寸的目标图像;
格式:
void resize(InputArray src,
OutputArray dst,
Size dsize,
double fx=0,
double fy=0,
int interpolation=INTER_LINEAR );
参数:
dsize:输出图像的大小;
当dsize不为0时,即指定的图像缩放大小;
当dsize为0时,缩放大小为dsize=Size(round(fx*src.cols),round(fy*src.rows))
其中,fx,fy为缩放比例;
【注】:
dsize和fx/fy不能同时为0;

resize放大图像:
若要放大图像,推荐使用CV_INTER_LINEAR双线性插值;
以王者荣耀logo为例,大小为482*355,进行放大
示例如下:
int main()
{
Mat img = imread(0.jpg);
imshow(原始图, img);
Mat dst = Mat::zeros(428, 512, CV_8UC3); //我要转化为512*512大小的
resize(img, dst, dst.size());
imshow(尺寸调整之后, dst);
waitKey(0);
return 0;
}

resize缩小图像:
要缩小图像,一般推荐使用CV_INTER_AREA插值;
程序如下:
int main()
{
Mat img = imread(0.jpg);
imshow(原始图, img);
Mat dst;
resize(img, dst, Size(),0.5,0.5);//我长宽都变为原来的0.5倍
imshow(尺寸调整之后, dst);
waitKey(0);
waitKey(0);
return 0;
}

图像金字塔:
图像金字塔是用来进行图像缩放的,功能和resize一样;
为什么还需要学习它;
因为其在卷积神经网络中会遇到这个名词;
且搞图像的都得学它;
什么是金字塔?
下图所示,
我们将一层层的图像比喻为金字塔,层级越高,则图像尺寸越小,分辨率越低;
两种类型的金字塔:
高斯金字塔:用于下采样,主要的图像金字塔;
拉普拉斯金字塔:用于重建图像,也就是预测残差,对图像最大程度的还原;
比如一副小图像重建为一幅大图像;
上采样和下采样:
上采样:就是图像放大,使用pryUp函数;
下采样:就是图像缩小,使用pryDown函数;

pryUp上采样:图像放大
格式:
void pyrUp(InputArray src,
OutputArray dst,
const Size dstsize=Size());
上采样步骤:
①将图像在每个方向放大为原来的两倍,新增的行和列用0填充;
②使用卷积核与放大的图像卷积,获得新增像素的近似值;
程序如下:
int main()
{
Mat img = imread(0.jpg);
imshow(原始图, img);
Mat dst;
pyrUp(img, dst, Size(img.cols*2, img.rows*2)); //放大一倍
imshow(尺寸放大之后, dst);
waitKey(0);
return 0;
}

pryDown下采样:图像缩小
格式:
void pyrDown(InputArray src,
OutputArray dst,
const Size dstsize=Size());
下采样步骤:
①将图像进行高斯内核卷积
②将所有偶数行和列去除
【注】:
上、下采样都存在一个严重的问题,那就是图像变模糊了,因为缩放的过程中发生了信息丢失的问题。要解决这个问题,就得看拉普拉斯金字塔了。
因此,如果缩放还是采用resize函数;

resize()函数: 可以将原图像精确的转化为指定尺寸的目标图像;
pryDown下采样:图像缩小,图像变模糊;
pryUp上采样:图像放大,图像变模糊
图像缩放OPENCV图像缩放RESIZEPRYUPPRYDOWN版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_982443.html