彩色图像批量转换为灰度图像

       最近在做haar分类器的训练,要用到大量的正负样本,在网上找了一些,有一份样本集除了它是彩色图像外还算满意,为了后期训练时间能够缩短一点,决定把它们都转换成灰度图像!

      说干就干,一幅图像的转换很简单了,但是批量转换就稍微复杂了一丢丢,在网上找了下没有现成的代码(可能这个东西太简单大家懒得写出来。。。),于是找了个类似的,参考理解修改了一下,就OK了,达到了预期的要求,搞定!


#include"stdlib.h"       
#include   
#include "stdio.h"    
#include "cv.h"    
using namespace std;  
int main()  
{  
    int image_id = 0;  
    char filename[10926];  
    char filename2[10926];  
   
    IplImage *image=0,*imageresize=0;    
    sprintf(filename , "C:\\Documents and Settings\\Administrator\\桌面\\face\\face\\negdata\\%d.jpg" , image_id );  
    IplImage* src = cvLoadImage(filename);  
    cout<<"\n 开始灰度化! \n";  
  
    while(src)  
    {     
    imageresize=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);  //创建头并分配数据   
    cvCvtColor(src, imageresize, CV_RGB2GRAY);
    sprintf(filename2 , "C:\\Documents and Settings\\Administrator\\桌面\\face\\face\\neg\\%d.jpg" , image_id );  
    cvSaveImage(filename2, imageresize);  //将处理后的图像保存放入另一个文件夹
    
    cvReleaseImage(&imageresize);    
    cvReleaseImage(&src);  //释放内存
    image_id++;  //图片序号递增
    sprintf(filename , "C:\\Documents and Settings\\Administrator\\桌面\\face\\face\\negdata\\%d.jpg" , image_id );  
    src= cvLoadImage(filename); //加载下一幅图像 
    }  
    
    cout<<"\n 灰度化完毕! \n";  
    system("PAUSE"); 
	return(0);
}  

我negdata中总共有10000+的图片(命名方式是0.jpg ,  1.jpg  ,............10000.jpg  ,....用到了ACDSee的批量重命名),大概用了一分多钟吧,全部转换完,保存在了另一个文件夹neg中。


参考代码的网址http://blog.csdn.net/kobesdu/article/details/8952412

你可能感兴趣的:(彩色图像批量转换为灰度图像)