FeatureInfo extractAllPoints(const QString& fname, OGRCoordinateTransformation *trans) { FeatureInfo ret = FeatureInfo(); DataSourcePtr ds(OGRSFDriverRegistrar::Open(fname.toLocal8Bit(), false)); if (ds == nullptr) { qWarning() << "Error opening file:" << fname; } else { size_t verts, objs; auto layer = ds->GetLayer(0); layer->ResetReading(); std::tie(verts, objs) = countGeometry(layer); qDebug() << "Points:" << verts << "Objects:" << objs; // Initialize the info ret.verts.reserve(verts); ret.starts.reserve(objs); ret.counts.reserve(objs); layer->ResetReading(); extractGeometry(layer, trans, ret); } return ret; }
int BundlerMatcher::extractSiftFeature(int fileIndex) { std::stringstream filepath; filepath << mInputPath << mFilenames[fileIndex]; std::string tmp = filepath.str(); char* filename = &tmp[0]; bool extracted = true; unsigned int imgId = 0; ilGenImages(1, &imgId); ilBindImage(imgId); int nbFeatureFound = -1; if(ilLoadImage(filename)) { int w = ilGetInteger(IL_IMAGE_WIDTH); int h = ilGetInteger(IL_IMAGE_HEIGHT); int format = ilGetInteger(IL_IMAGE_FORMAT); if (mSift->RunSIFT(w, h, ilGetData(), format, GL_UNSIGNED_BYTE)) { int num = mSift->GetFeatureNum(); SiftKeyDescriptors descriptors(128*num); SiftKeyPoints keys(num); mSift->GetFeatureVector(&keys[0], &descriptors[0]); //Save Feature in RAM mFeatureInfos.push_back(FeatureInfo(w, h, keys, descriptors)); nbFeatureFound = num; } else { extracted = false; } } else { extracted = false; } ilDeleteImages(1, &imgId); if (!extracted) { std::cout << "Error while reading : " <<filename <<std::endl; } return nbFeatureFound; }