首页 > 其他 > 详细

调整图像的尺寸 - cvResize() 函数实现

时间:2014-05-26 13:33:35      阅读:1282      评论:0      收藏:0      [点我收藏+]

前言

  有时会碰到一张图片太大了,想将它缩小。本文将讲解一个很好用的函数解决这个问题。

图像尺寸调整函数 cvResize

bubuko.com,布布扣
1 // 图像尺寸调整函数
2 void Resize (
3     const CvArr * src,    // 待处理图像
4     CvArr * dst,    // 处理后图像
5     int interpolation = CV_LINTER_LINTER    //插值方法
6 )
bubuko.com,布布扣

  在调用此函数前,需要定制好处理后图像的格式,再将其内存块地址传入第二个参数;对于第三个参数可暂时不去理会,使用默认参数即可,它的作用是提供一种让像素点发现图像缩放后其对应点的( 插值 )方法。

代码示例

  下面的程序将原来图像的尺寸缩短一半:

bubuko.com,布布扣
 1 // 此头文件包含图像IO函数的声明
 2 #include "highgui.h"
 3  // 此头文件包含基本的图像处理函数和高级计算机视觉算法
 4 #include "cv.h"
 5 
 6 int main (void) {
 7 
 8     // 将D盘目录下名为" 1.jpg "的图像加载至内存并获得一个指向该图像内存块的指针img
 9     IplImage * img = cvLoadImage ("D:\\1.jpg");
10 
11     // 创建一个窗口显示平滑处理前的图像
12     cvNamedWindow ("处理前", CV_WINDOW_AUTOSIZE);
13 
14     // 将图像装载进窗口并显示此窗口
15     cvShowImage ("处理前", img);
16 
17     // 创建一个新的图像内存块,以存放平滑结果。
18     IplImage * out = cvCreateImage (
19         cvSize (img->height/2, img->width/2),
20         img->depth,
21         img->nChannels
22     );
23 
24     // 图像尺寸调整函数。
25     cvResize (
26         img,
27         out
28     );
29 
30     // 创建一个窗口显示平滑处理后的图像
31     cvNamedWindow ("处理后", CV_WINDOW_AUTOSIZE);
32 
33     // 将图像装载进窗口并显示此窗口
34     cvShowImage ("处理后", out);
35 
36     // 该函数的参数为 0 时,程序将等待用户触发一个按键操作。
37     // 若参数为正整数,则程序将暂停该整数个毫秒单位直至用户有任何按键。
38     cvWaitKey (0);
39 
40     // 释放图像内存块
41     cvReleaseImage (&img);
42     cvReleaseImage (&out);
43 
44     // 关闭窗口同时释放窗口内存块
45     cvDestroyWindow ("平滑前");
46     cvDestroyWindow ("平滑后");
47 
48     return 0;
49 }
bubuko.com,布布扣

运行结果

  bubuko.com,布布扣

  bubuko.com,布布扣

小结

  可以发现,收缩后的图像效果不好。

  其实图像的伸缩变化没有想象的那么简单,具体的改进方法将会在以后的文章中介绍。

 

调整图像的尺寸 - cvResize() 函数实现,布布扣,bubuko.com

调整图像的尺寸 - cvResize() 函数实现

原文:http://www.cnblogs.com/scut-fm/p/3746614.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!