/**
 * @function main
 */
int main(int argc, char *argv[]) {
  
  if( argc < 4 ) {
    std::cout << "Syntax: "<< argv[0] << " devX camX  OBJ_ID"<< std::endl;
    return 1;
  }

  /** Setting global data */
  Json::Value config;
  parseJSONFile("/home/kenneth/VisionProjectKrang/alvarCode/globalStuff/config.json", config);
  setGlobalData(config);
  std::cout << "\t * Setting global data done." << std::endl;

  /** Initialise GlutViewer and CvTestbed */
  GlutViewer::Start( argc, argv, gWidth, gHeight );
  CvTestbed::Instance().SetVideoCallback(videocallback);
  std::cout << "\t * Initialized GlutViewer and CvTestbed "<< std::endl;

  /** Get device and camera indices from terminal */
  int devIndex = atoi( argv[1] );
  int camIndex = atoi( argv[2] );
  gObjID = atoi( argv[3] );

  /** Init parameters and camera */
  alvar::Capture *cap;
  init( devIndex, camIndex, &cap);


  // Handle capture lifecycle and start video capture
  if (cap) {

    std::cout << "** Start capture"<< std::endl;
    cap->start();
    cap->setResolution(gWidth, gHeight);
    
    char videoTitle[100];
    sprintf( videoTitle, "Marker Detector for camera %d", camIndex );    
    CvTestbed::Instance().StartVideo(cap, videoTitle );
    
    cap->stop();
    delete cap;
    
  } else {
    std::cout << "[X] Could not initialize the selected capture backend." << std::endl;
    return 1;
  }
  
  return 0;
  
}
 /*!
  * @param data boundary condition data loaded from \c GetPot file
  */
 void setData( const BCInterfaceData3D& data ) { setGlobalData( data ); }