前言
有时会碰到一张图片太大了,想将它缩小。本文将讲解一个很好用的函数解决这个问题。
图像尺寸调整函数 cvResize
1 // 图像尺寸调整函数 2 void Resize ( 3 const CvArr * src, // 待处理图像 4 CvArr * dst, // 处理后图像 5 int interpolation = CV_LINTER_LINTER //插值方法 6 )
在调用此函数前,需要定制好处理后图像的格式,再将其内存块地址传入第二个参数;对于第三个参数可暂时不去理会,使用默认参数即可,它的作用是提供一种让像素点发现图像缩放后其对应点的( 插值 )方法。
代码示例
下面的程序将原来图像的尺寸缩短一半:
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 }
运行结果
小结
可以发现,收缩后的图像效果不好。
其实图像的伸缩变化没有想象的那么简单,具体的改进方法将会在以后的文章中介绍。
调整图像的尺寸 - cvResize() 函数实现,布布扣,bubuko.com
原文:http://www.cnblogs.com/scut-fm/p/3746614.html