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