基本思路:
1、 输入RGB(彩色)图像
2、 处理图像
3、 输出GRAY(灰度)图像
这里将处理图像过程单独写成一个函数,供主函数调用
1 void RGB2GRAY(IplImage* src)
2
3 {
4
5//创建2个窗体,分别显示源图像和处理后的灰度图
6
7cvNamedWindow("RGB");
8
9cvNamedWindow("GRAY");
10
11
12//显示源图像
13
14cvShowImage("RGB",src);
15
16
17//创建一个源图像一样的IplImage指针
18
19IplImage* dst = cvCreateImage(cvGetSize(src),src->depth,1);
20
21
22//色彩空间转换,转换类型为CV_BGR2GRAY
23
24cvCvtColor(src,dst,CV_BGR2GRAY);
25
26
27//显示灰度图
28
29cvShowImage("GRAY",dst);
30
31
32//释放资源
33
34cvReleaseImage(&dst);
35
36
37//Wait for the user to hit a key, then clean up the windows
38
39cvWaitKey(0);
40
41cvDestroyWindow("RGB");
42
43cvDestroyWindow("GRAY");
44
45 }
1 //主函数
2
3 int main(int argc, char** argv)
4
5 {
6
7IplImage* img = cvLoadImage(argv[1]);
8
9RGB2GRAY(img);
10
11while(1)
12
13{
14if(cvWaitKey(100)==27)
15
16break;
17}
18
19
20cvReleaseImage(&img);
21
22exit(0);
23
24 }