Пример #1
0
int main(int argc, char** argv) {

  if (argc < 3) {
    printf("Usage: salienpoints <image file> <# of salien points>\n");
    exit(1);
  }
  ImageFeature imgFeature;
  imgFeature.load(argv[1]);
  SalientPoints sp(imgFeature);
  
  vector<Point> points = sp.getSalientPoints(atoi(argv[2]));
  
  DBG(10) << points.size() << " salient points extracted, wanted " << atoi(argv[2]) << endl;
  for (uint i = 0; i < points.size(); i++) {
    Point p = points[i];
    DBG(10) <<"(" << p.x << ", " << p.y << ")" << endl;
  } 

  ImageFeature newImage;
  newImage.createFromPixelset(imgFeature.xsize(), imgFeature.ysize(), sp.getPixels());
    
  newImage.display();

}
int main(int argc, char** argv) {

  GetPot cl(argc,argv);
  if (cl.search(2,"--help","-h")) {
    USAGE();
  }

  vector<string> images;
  if (cl.search("--images")) {
    string filename =  cl.next(" ");
    while (filename != " ") {
      images.push_back(filename);
      filename = cl.next(" ");
    }
  } else if (cl.search("--filelist")) {
    string filename = "test";
    igzstream ifs; ifs.open(cl.follow("list","--filelist"));
    if(!ifs.good() || !ifs) {
      ERR << "Cannot open filelist " <<cl.follow("list","--filelist")  << ". Aborting." << endl;
      exit(20);
    }
    while(!ifs.eof() && filename!="") {
      getline(ifs,filename);
      if(filename!="") {
        images.push_back(filename);
      }
    }
    ifs.close();
  } else {
    USAGE();
    exit(20);
  }

  bool forceGray;
  if (cl.search(1, "--gray")) {
    forceGray = true;
  } else if (cl.search(1, "--color")) {
    forceGray = false;
  } else {
    USAGE();
    exit(20);
  }

  int numPatches = 200;
  if (cl.search(2, "-n", "--num")) {
    numPatches = cl.next(200);
  }

  for(uint i = 0; i < images.size(); i++) {
    string filename=images[i];
    DBG(10) << "Processing '"<< filename << "'.(" << i << "/" << images.size()<< ")" <<endl;
    ImageFeature img; img.load(filename,forceGray);
    DifferenceOfGaussian sift(img);
    vector<InterestPoint> interestPoints = sift.getInterestPoints(numPatches);
    
    ImageFeature padded = img;
    vector<double> color(3,1.0);
    
    for (int i = 0; i < (int) interestPoints.size(); i++) {
      InterestPoint ip = interestPoints[i];
      box(padded, ip.x, ip.y, color, ip.scale / 2);
    }
    padded.display();

    break;
  }


  DBG(10) << "cmdline was: "; printCmdline(argc,argv);

}