Thursday, February 27, 2014

opencv flann index of a data file with svm-light like --sparse-- data format (e.g., feature_index:feature_value)

 
to index:
Mat samples;
samples.create(rowSize, featSize, CV_32FC1);

putFeatures( fileName, featSize, trainSamples);
flann::Index flann_index( trainSamples, cv::flann::KMeansIndexParams( 32, 11, cvflann::CENTERS_KMEANSPP, 0.2));

flann_index.save( indexFile);

to read sparse data format:
while( fgets( buff, sizeof(buff), file) != NULL){
 first = strtok(buff, " ");
 second = strtok(NULL, " ");
 do{
  third = strtok(NULL, " ");
  if( third != NULL){
   length = strlen( third);
   indexOfCol = strcspn ( third, keys);
   if( indexOfCol < length){
    indexStr = strndup(third, indexOfCol);
    valueStr = strndup(third+indexOfCol+1, length);
    mat.at( rowIndex, atoi( indexStr)-1) = atof( valueStr);
   }
  }
 }while( third!=NULL);
 rowIndex++;
}

No comments:

Post a Comment