| 149 | } |
| 150 | |
| 151 | int |
| 152 | HaarDispAdaClassifier::addToTraining(vector<Rect> &R_in, vector<int> &L_in, Mat &D_in) |
| 153 | { |
| 154 | Mat HF(1,num_filters_,CV_32F); |
| 155 | Mat MH(1,num_filters_,CV_8UC1); |
| 156 | for(unsigned int i = 0; i<R_in.size(); i++){ |
| 157 | if(R_in[i].width < 2 || R_in[i].height <2){ |
| 158 | // do nothing with really small rois |
| 159 | } |
| 160 | else if(numSamples_<maxSamples_){// not too many samples already |
| 161 | setDImageROI_fast(R_in[i],D_in); |
| 162 | int rtn = haar_features_fast(HF); |
| 163 | if((rtn) && (find_central_disparity(R_in[i].x, R_in[i].y, R_in[i].height, R_in[i].width, D_in) > 0.0)){ |
| 164 | for(int j=0;j<num_filters_;j++){// copy the subset of samples |
| 165 | trainingSamples_.at<float>(numSamples_,j) = HF.at<float>(0,j); |
| 166 | } |
| 167 | if(L_in[i] <= 0 ){ |
| 168 | trainingLabels_.at<int>(numSamples_,0) = 0;//classes: 0,1 not -1,1 |
| 169 | } |
| 170 | else{ |
| 171 | trainingLabels_.at<int>(numSamples_,0) = L_in[i]; |
| 172 | } |
| 173 | numSamples_++; |
| 174 | }// end if successful compute feature |
| 175 | }// end of if not too many samples already |
| 176 | }// end each roi |
| 177 | return(numSamples_); |
| 178 | }// end addToTraining |
| 179 | |
| 180 | void |
| 181 | HaarDispAdaClassifier::setDImageRoi(Rect &R_in, Mat &I_in) |