前言
前文介绍了一个简单的变换。需要注意的是,很多时候,输出和输入图像的格式是不同的( 大小,深度,通道 )。在本文将展示的程序中,对图像进行了缩放( 使用cvPyrDown 函数 ),这种情况下需要先定制好输出图像的格式,然后再将其与输入图像一起传递进缩放函数。
代码示例
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->width/2, img->height/2), // 大小为原图的一半 20 img->depth, // 深度相同 21 img->nChannels // 通道数相同 22 ); 23 24 // 该函数实现对图像的缩放功能 25 cvPyrDown ( 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 }
运行测试
1. 将如下测试图片另存到 D 盘,命名为 "1.jpg":
2. 运行结果:
OpenCV 入门示例之五:一个复杂点的变换,布布扣,bubuko.com
原文:http://www.cnblogs.com/scut-fm/p/3733560.html