OpenCV 入门示例之四:一个简单的变换

前言

  图像的平滑处理,是计算机视觉中非常重要的操作,本文将展示一个可以对图像进行平滑处理的简单程序。而关于平滑处理深层次的知识,会在以后的文章中重点探讨。

代码示例

 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         cvGetSize (img),
20         img->depth,
21         img->nChannels
22     );
23 
24     // 平滑处理函数,具体参数暂不去理会。
25     cvSmooth (
26         img, 
27         out, 
28         CV_GAUSSIAN, 
29         3, 
30         3
31     );
32 
33     // 创建一个窗口显示平滑处理后的图像
34     cvNamedWindow ("平滑后", CV_WINDOW_AUTOSIZE);
35 
36     // 将图像装载进窗口并显示此窗口
37     cvShowImage ("平滑后", out);
38 
39     // 该函数的参数为 0 时,程序将等待用户触发一个按键操作。
40     // 若参数为正整数,则程序将暂停该整数个毫秒单位直至用户有任何按键。
41     cvWaitKey (0);
42 
43     // 释放图像内存块
44     cvReleaseImage (&img);
45     cvReleaseImage (&out);
46 
47     // 关闭窗口同时释放窗口内存块
48     cvDestroyWindow ("平滑前");
49     cvDestroyWindow ("平滑后");
50 
51     return 0;
52 }

运行测试

  1. 将如下测试图片另存到 D 盘,命名为 "1.jpg":

  

  2. 运行结果:

  

  仔细观察,发现右边的图像模糊了。

posted on 2014-05-15 22:15  空山悟  阅读(904)  评论(0编辑  收藏  举报

导航