广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    OpenCV:图像缩放操作resize,pryUp,pryDown

    来源:网络收集  点击:  时间:2024-07-21
    【导读】:
    绪:图像的缩放操作是图像处理中基本的处理方式;OpenCV中对图像进行缩放最简单的方法是调用resize函数;另外,还有采用图像金字塔来进行图像缩放的;pryUp和pryDown函数;本文主要介绍:resize,pryUp,pryDown函数及其图像缩放的应用;工具/原料moreOpenCV 2410方法/步骤1/6分步阅读

    resize()函数:

    可以将原图像精确的转化为指定尺寸的目标图像;

    格式:

    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;

    2/6

    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;

    }

    3/6

    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;

    }

    4/6

    图像金字塔:

    图像金字塔是用来进行图像缩放的,功能和resize一样;

    为什么还需要学习它;

    因为其在卷积神经网络中会遇到这个名词;

    且搞图像的都得学它;

    什么是金字塔?

    下图所示,

    我们将一层层的图像比喻为金字塔,层级越高,则图像尺寸越小,分辨率越低;

    两种类型的金字塔:

    高斯金字塔:用于下采样,主要的图像金字塔;

    拉普拉斯金字塔:用于重建图像,也就是预测残差,对图像最大程度的还原;

    比如一副小图像重建为一幅大图像;

    上采样和下采样:

    上采样:就是图像放大,使用pryUp函数;

    下采样:就是图像缩小,使用pryDown函数;

    5/6

    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;

    }

    6/6

    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

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 20:23:16  耗时:0.031
    0.0307s