/** * @file createLocalFeatures.cpp * @brief create local feature files * @author Erik Rodner * @date 02/14/2008 */ #include #include #include #include #include #include #include #include #include #include #include #ifdef NOVISUAL #include #else #include #endif using namespace OBJREC; using namespace NICE; using namespace std; /** create local feature files */ int main (int argc, char **argv) { std::set_terminate(__gnu_cxx::__verbose_terminate_handler); Config conf ( argc, argv ); string setname; try { setname = conf.gS("main", "set"); } catch ( Exception ) { fprintf (stderr, "usage: %s -config -ds \n", argv[0]); exit(-1); } bool useColor = conf.gB("main", "color", true ); Preprocess::Init ( &conf ); MultiDataset md ( &conf ); LabeledSet ls = *(md[setname]); LocalFeatureRepresentation *lfrep = GenericLFSelection::selectLocalFeatureRep ( &conf ); LFWriteCache lfw ( &conf, lfrep ); std::string cachedir = conf.gS("cache", "root"); int cachemode = Globals::getCacheMode ( conf.gS("cache", "mode", "cat") ); ProgressBar pb ("Local Feature Extraction" ); LOOP_ALL_S(ls) { EACH_S(classno,filename); pb.update ( ls.count() ); NICE::Image img; NICE::ColorImage imgColor; if ( !useColor ) img = Preprocess::ReadImgAdv ( filename ); else imgColor = Preprocess::ReadImgAdvRGB ( filename ); Globals::setCurrentImgFN ( filename ); std::string cache_filename = Globals::getCacheFilename( cachedir, cachemode ); std::string cache_filename_desc = cache_filename + ".desc"; struct stat dummy; if ( stat ( cache_filename_desc.c_str(), &dummy ) < 0 ) { VVector features; VVector positions; cerr << "creating features for file " << filename << " ..." << endl; cerr << "writing features to file " << cache_filename_desc << " ..." << endl; if ( !useColor ) { lfw.extractFeatures ( img, features, positions ); } else { lfw.extractFeatures ( imgColor, features, positions ); } cerr << "pos: " << positions.size() << " feat:" << features.size() << endl; } else { cerr << "description file " << cache_filename_desc << " exists !" << endl; } } delete lfrep; return 0; }