彩色影象批量轉換為灰度影象
阿新 • • 發佈:2019-02-04
最近在做haar分類器的訓練,要用到大量的正負樣本,在網上找了一些,有一份樣本集除了它是彩色影象外還算滿意,為了後期訓練時間能夠縮短一點,決定把它們都轉換成灰度影象!
說幹就幹,一幅影象的轉換很簡單了,但是批量轉換就稍微複雜了一丟丟,在網上找了下沒有現成的程式碼(可能這個東西太簡單大家懶得寫出來。。。),於是找了個類似的,參考理解修改了一下,就OK了,達到了預期的要求,搞定!
#include"stdlib.h" #include <highgui.h> #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