http://blog.csdn.net/xiaoshengforever/article/details/12191303

2013-09-30 12:21 10842人阅读 评论(0) 收藏 举报
 分类:
opencv/图像处理/人脸识别(14) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

OpenCV改变图像大小的操作有两类:resize与图像金字塔,但是这两类操作差别还是比较大的。

一、resize

函数原型

void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )

各个参数的意义比较直观,但是需要注意的是dsize与fx和fy必须不能同时为零,也就是说要么dsize不为零而fx与fy同时可以为0,要么dsize为0而fx与fy不同时为0;resize函数的目标大小可以是任意的大小,可以不保持长宽比率,删除的像素或者新增的像素值通过interpolation控制;

二、图像金字塔

pyrDown与pyrUp分别表示向下降采样与向上升采样,但是二者并不是互为逆操作;

void pyrDown(InputArray src, OutputArray dst, const Size& dstsize=Size(), int border-

Type=BORDER_DEFAULT )

void pyrUp(InputArray src, OutputArray dst, const Size& dstsize=Size(), int border-

Type=BORDER_DEFAULT )

这两个操作实现图像金字塔的经典操作,他们仅仅是分别代表一次采样操作,也就是说,向下(或者向上)进行相邻层次的金字塔采样,调用一次pyrDown函数只能降低到原图像尺寸的1/2;反之,调用pyrUp目标图像则为原图像尺寸的2倍。因为它们内部都给定了一次采样尺寸的约束。也就是说采样之后,长宽比基本是不变的。

例子:

void ResizeDemo()

{

Mat img1=imread("person_org.jpg");

Mat img2;

//将原图像变为32*32,长宽比被改变了

resize(img1,img2,Size(32,32),0,0,CV_INTER_LINEAR);

namedWindow("WindowOrg");

namedWindow("WindowNew");

imshow("WindowOrg",img1);

imshow("WindowNew",img2);

waitKey(10000);

}

void PyrDown()

{

Mat img1=imread("person_org.jpg");

Mat img2;

Size sz;

//金字塔向下或者向上采样操作 ,基本不改变图像长宽比率

//pyrDown(img1,img2,sz,BORDER_DEFAULT);

pyrUp(img1,img2,sz,BORDER_DEFAULT);

pyrUp(img2,img2,sz,BORDER_DEFAULT);

namedWindow("WindowOrg");

namedWindow("WindowNew");

imshow("WindowOrg",img1);

imshow("WindowNew",img2);

waitKey(10000);

}

总结:resize可以一次性将原图像变为任意不为0的尺寸,适合用来做归一化图像操作;而pyrDown与pyrUp适合做长宽比率不变得操作,且调用一次只能变为1/2或者2倍~~~

 

OpenCV 图片尺寸调整的更多相关文章

  1. PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转

    [强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...

  2. OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    这篇已经写得很好,真心给作者点个赞.题目都是直接转过来的,直接去看吧. Reference Link : http://blog.csdn.net/poem_qianmo/article/detail ...

  3. 【OpenCV新手教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

  4. 学习 opencv---(12)OpenCV 图像金字塔:高斯金字塔,拉普拉斯金字塔与图片尺寸缩放

    在这篇文章里,我们一起学习下 图像金字塔 的一些基本概念,如何使用OpenCV函数pyrUp和pyrDown 对图像进行向上和向下采样,以及了解专门用于缩放图像尺寸的resize函数的用法.此博文一共 ...

  5. opencv 4 图像处理(漫水填充,图像金字塔与图片尺寸缩放,阈(yu)值化)

    漫水填充 实现漫水填充算法:floodFill函数 简单调用范例 #include <opencv2/opencv.hpp> #include <opencv2/imgproc/im ...

  6. .NET 调整图片尺寸(Resize)各种方法

    本文中如无特别说明 .NET 指 .NET 5或者更高版本,代码同样可用于 .NET Core 前言 调整图片尺寸最常用的场景就是生成缩略图,一般为保持纵横比缩小,如果图片放大会使图片变得模糊,如果确 ...

  7. OpenCV尺寸调整

    #include<cv.h> #include<highgui.h> int main(int argc, char** argv) { IplImage* img = cvL ...

  8. TensorFlow 图像预处理(一) 图像编解码,图像尺寸调整

    from: https://blog.csdn.net/chaipp0607/article/details/73029923 TensorFlow提供了几类图像处理函数,下面介绍图像的编码与解码,图 ...

  9. PHP获取远程图片并调整图像大小(转)

    <?php /** * *函数:调整图片尺寸或生成缩略图 *修改:2013-2-15 *返回:True/False *参数: * $Image 需要调整的图片(含路径) * $Dw=450 调整 ...

随机推荐

  1. Drupal设置首页默认内容

    接触Drupal时间不长,记录一下学习点滴~ Drupal首页的内容,默认是取node表的内容展示的,如果想让首页展示自己创表的内容怎么办呢?以Drupal7为例 在这个admin/config/sy ...

  2. python修炼7----迭代器

    迭代器 -------------------------------------------------------------------------------- 充电小知识 1.yield-- ...

  3. java练习 - 字符串反转

    思路: 1. 首先将字符串转换成数组,一个数组元素放一个字符. 2. 循环遍历字符串,将所有字符串前后字符调换位置,比如:第一个和最后一个调换,第二个和倒数第三调换,第三个和倒数第三调换,直到所有字符 ...

  4. centsOS下安装vsftp的配置

    1. 添加用户组 # groupadd www 2. 修改配置 # vi /etc/vsftpd/vsftpd.conf 查找: #chroot_list_enable=YES #chroot_lis ...

  5. 扩展KMP——算法总结,来自于 迷路的鸽子

    扩展kmp                 LRH 所谓扩展kmp指的是与kmp相似的求辅助数组的原理,但是本身与kmp关系不大. 1.exkmp的用途:给定一个主串s和一个子串t,求出s中每一个后缀 ...

  6. 神州数码品众_Android面试

    1.进程的定义,进程的调度: 2.线程的定义,多线程出错的描述: 3.数组和链表的定义和区别: 4.对链表的反序: 5.tree高度的计算: 6.设计一个存储系统,可以从客户端进行上传文件: 7.从长 ...

  7. html5--画布

    简介 canvas是HTML5中的新元素,你可以使用javascript用它来绘制图形.图标.以及其它任何视觉性图像.它也可用于创建图片特效和动画.canvas 元素本身是没有绘图能力的.所有的绘制工 ...

  8. qt rcc 使用

    做项目的时候, 最初把图片放到 qrc里面, 使用编译生成的qrc_cpp. 但是编译超慢, 还经常提示"编译器空间不足". 网上很多人说是 中文路径的问题. 可是总是感觉编译器空 ...

  9. ARC 下面可能导致的内存问题

    一.ARC相对MRC来说,减轻了程序员的大部分内存管理工作,使用ARC的时候也需要十分清除内存管理的原理,不然可能带来一些很难调试的问题.下面是ARC下面需要注意的一些问题 1)对象互相引用,形成引用 ...

  10. 多线程---静态同步函数的锁是class(转载)

    /** 如果同步函数被静态修饰,那么他的锁就是该方法所在类的字节码文件对象 类名.class 静态进内存时,内存中没有本类对象,但是一定有该类对应的字节码文件对象. 该对象就是:类名.class   ...