Exemplo n.º 1
0
//-----------------------------------------------------------------------------
bool Root::parseServer(QDomNode& xmlnServer)
{
    Q_ASSERT(!xmlnServer.isNull());

    ServerPtr server = addServer();
    SubjectLocker locker(server.get());

    for (QDomElement xmln = xmln.firstChildElement();
		 !xmln.isNull();
		 xmln = xmln.nextSiblingElement())
    {
	    QString value = xmln.text();
        if (xmln.tagName() == QString::fromLatin1("name"))
            server->setName_(value);
        else if (xmln.tagName() == QString::fromLatin1("host"))
            server->setHostname(value);
        else if (xmln.tagName() == QString::fromLatin1("port"))
            server->setPort(value);
        else if (xmln.tagName() == QString::fromLatin1("database"))
        {
            if (!parseDatabase(server, xmln))
                return false;
        }
    }
    // backward compatibility with FR < 0.3.0
    if (server->getName_().isEmpty())
        server->setName_(server->getConnectionString());
    server->setChildrenLoaded(true);
    return true;
}
Exemplo n.º 2
0
TEST(Matching, ValidDatabase)
{
  std::vector<Datasheet> vec_database;
  const std::string sfileDatabase = stlplus::create_filespec( std::string(THIS_SOURCE_DIR), sDatabase );

  EXPECT_TRUE( parseDatabase( sfileDatabase, vec_database ) );
  EXPECT_TRUE( !vec_database.empty() );
}
Exemplo n.º 3
0
TEST(Matching, ParseDatabaseNotExist)
{
  std::vector<Datasheet> vec_database;
  Datasheet datasheet;
  const std::string sfileDatabase = stlplus::create_filespec( std::string(THIS_SOURCE_DIR), sDatabase );
  const std::string sModel = "NotExistModel";

  EXPECT_TRUE( parseDatabase( sfileDatabase, vec_database ) );
  EXPECT_FALSE( getInfo( sModel, vec_database, datasheet ) );
}
Exemplo n.º 4
0
TEST(Matching, ParseDatabaseCanon_EOS_1100D)
{
  std::vector<Datasheet> vec_database;
  Datasheet datasheet;
  const std::string sfileDatabase = stlplus::create_filespec( std::string(THIS_SOURCE_DIR), sDatabase );
  const std::string sModel = "Canon EOS 1100D";

  EXPECT_TRUE( parseDatabase( sfileDatabase, vec_database ) );
  EXPECT_TRUE( getInfo( sModel, vec_database, datasheet ) );
  EXPECT_EQ( 22.2, datasheet.sensorSize_ );
}
Exemplo n.º 5
0
TEST(Matching, ParseDatabaseNotExist)
{
    std::vector<Datasheet> vec_database;
    Datasheet datasheet;
    std::string sfileDatabase = stlplus::create_filespec( std::string(THIS_SOURCE_DIR), "cameraGenerated.txt" );
    std::string sModel = "NotExistModel";
    std::string sBrand = "NotExistBrand";

    EXPECT_TRUE( parseDatabase( sfileDatabase, vec_database ) );
    EXPECT_FALSE( getInfo( sBrand, sModel, vec_database, datasheet ) );
}
Exemplo n.º 6
0
TEST(Matching, ParseDatabaseA710_IS)
{
  std::vector<Datasheet> vec_database;
  Datasheet datasheet;
  const std::string sfileDatabase = stlplus::create_filespec( std::string(THIS_SOURCE_DIR), sDatabase );
  const std::string sModel = "Canon PowerShot A710 IS";

  EXPECT_TRUE( parseDatabase( sfileDatabase, vec_database ) );
  EXPECT_TRUE( getInfo( sModel, vec_database, datasheet ) );
  EXPECT_EQ( "Canon PowerShot A710 IS", datasheet.model_ );
  EXPECT_EQ( 5.75, datasheet.sensorSize_ );
}
Exemplo n.º 7
0
TEST(Matching, ParseDatabaseCanon_EOS_1100D)
{
    std::vector<Datasheet> vec_database;
    Datasheet datasheet;
    std::string sfileDatabase = stlplus::create_filespec( std::string(THIS_SOURCE_DIR), "cameraGenerated.txt" );
    std::string sModel = "Canon EOS 1100D";
    std::string sBrand = "Canon";

    EXPECT_TRUE( parseDatabase( sfileDatabase, vec_database ) );
    EXPECT_TRUE( getInfo( sBrand, sModel, vec_database, datasheet ) );
    EXPECT_EQ( 22.2, datasheet._sensorSize );
}
Exemplo n.º 8
0
TEST(Matching, ParseDatabaseSD900)
{
    std::vector<Datasheet> vec_database;
    Datasheet datasheet;
    std::string sfileDatabase = stlplus::create_filespec( std::string(THIS_SOURCE_DIR), "cameraGenerated.txt" );
    std::string sModel = "Canon PowerShot SD900";
    std::string sBrand = "Canon";

    EXPECT_TRUE( parseDatabase( sfileDatabase, vec_database ) );
    EXPECT_TRUE( getInfo( sBrand, sModel, vec_database, datasheet ) );
    EXPECT_EQ( "Canon", datasheet._brand );
    EXPECT_EQ( "Canon PowerShot SD900", datasheet._model );
    EXPECT_EQ( 7.11, datasheet._sensorSize );
}
void KeePassXmlStreamReader::parseFile(){
    while(xmlReader.readNextStartElement()){
        if(xmlReader.name() == "database"){
            qDebug("Found database tag. Assuming KeePassX file format. Continuing with KeePassX specific parsing...");
            parseDatabase();
        }else if(xmlReader.name() == "PwmanXmlList"){
            qDebug("Found PwmanXmlList tag. Assuming pwman3 file format. Continuing with pwman3 specific parsing...");
            parsePwmanList();
        }
        else{
            qErrnoWarning("No Database found!");
        }
    }
    qDebug("Leaving parseFile...");
}
Exemplo n.º 10
0
int main(int argc, char **argv)
{
  CmdLine cmd;

  std::string sImageDir;
  std::string sfileDatabase = "";
  std::string sOutputDir = "";
  double focalPixPermm = -1.0;

  cmd.add( make_option('i', sImageDir, "imageDirectory") );
  cmd.add( make_option('d', sfileDatabase, "sensorWidthDatabase") );
  cmd.add( make_option('o', sOutputDir, "outputDirectory") );
  cmd.add( make_option('f', focalPixPermm, "focal") );

  try {
      if (argc == 1) throw std::string("Invalid command line parameter.");
      cmd.process(argc, argv);
  } catch(const std::string& s) {
      std::cerr << "Usage: " << argv[0] << '\n'
      << "[-i|--imageDirectory]\n"
      << "[-d|--sensorWidthDatabase]\n"
      << "[-o|--outputDirectory]\n"
      << "[-f|--focal] (pixels)\n"
      << std::endl;

      std::cerr << s << std::endl;
      return EXIT_FAILURE;
  }

  std::cout << " You called : " <<std::endl
            << argv[0] << std::endl
            << "--imageDirectory " << sImageDir << std::endl
            << "--sensorWidthDatabase " << sfileDatabase << std::endl
            << "--outputDirectory " << sOutputDir << std::endl
            << "--focal " << focalPixPermm << std::endl;

  if ( !stlplus::folder_exists( sImageDir ) )
  {
    std::cerr << "\nThe input directory doesn't exist" << std::endl;
    return EXIT_FAILURE;
  }

  if (sOutputDir.empty())
  {
    std::cerr << "\nInvalid output directory" << std::endl;
    return EXIT_FAILURE;
  }

  if ( !stlplus::folder_exists( sOutputDir ) )
  {
    if ( !stlplus::folder_create( sOutputDir ))
    {
      std::cerr << "\nCannot create output directory" << std::endl;
      return EXIT_FAILURE;
    }
  }

  std::vector<std::string> vec_image = stlplus::folder_files( sImageDir );
  // Write the new file
  std::ofstream listTXT( stlplus::create_filespec( sOutputDir,
                                                   "lists.txt" ).c_str() );
  if ( listTXT )
  {
    std::sort(vec_image.begin(), vec_image.end());
    for ( std::vector<std::string>::const_iterator iter_image = vec_image.begin();
      iter_image != vec_image.end();
      iter_image++ )
    {
      // Read meta data to fill width height and focalPixPermm
      std::string sImageFilename = stlplus::create_filespec( sImageDir, *iter_image );

      size_t width = -1;
      size_t height = -1;

      std::auto_ptr<Exif_IO> exifReader (new Exif_IO_EasyExif() );
      exifReader->open( sImageFilename );

      // Consider the case where focal is provided

      std::ostringstream os;
      //If image do not contains meta data
      if ( !exifReader->doesHaveExifInfo() || focalPixPermm != -1)
      {
        Image<unsigned char> image;
        if (openMVG::ReadImage( sImageFilename.c_str(), &image))  {
          width = image.Width();
          height = image.Height();
        }
        else
        {
          Image<RGBColor> imageRGB;
          if (openMVG::ReadImage( sImageFilename.c_str(), &imageRGB)) {
            width = imageRGB.Width();
            height = imageRGB.Height();
          }
          else
          {
            Image<RGBAColor> imageRGBA;
            if (openMVG::ReadImage( sImageFilename.c_str(), &imageRGBA))  {
              width = imageRGBA.Width();
              height = imageRGBA.Height();
            }
            else
              continue; // image is not considered, cannot be read
          }
        }
        if ( focalPixPermm == -1)
          os << *iter_image << ";" << width << ";" << height << std::endl;
        else
          os << *iter_image << ";" << width << ";" << height << ";"
            << focalPixPermm << ";" << 0 << ";" << width/2.0 << ";"
            << 0 << ";" << focalPixPermm << ";" << height/2.0 << ";"
            << 0 << ";" << 0 << ";" << 1 << std::endl;

      }
      else // If image contains meta data
      {
        double focal = focalPixPermm;
        width = exifReader->getWidth();
        height = exifReader->getHeight();
        std::string sCamName = exifReader->getBrand();
        std::string sCamModel = exifReader->getModel();

          std::vector<Datasheet> vec_database;
          Datasheet datasheet;
          if ( parseDatabase( sfileDatabase, vec_database ) )
          {
            if ( getInfo( sCamName, sCamModel, vec_database, datasheet ) )
            {
              // The camera model was found in the database so we can compute it's approximated focal length
              double ccdw = datasheet._sensorSize;
              focal = std::max ( width, height ) * exifReader->getFocal() / ccdw;
              os << *iter_image << ";" << width << ";" << height << ";" << focal << ";" << sCamName << ";" << sCamModel << std::endl;
            }
            else
            {
              std::cout << "Camera \"" << sCamName << "\" model \"" << sCamModel << "\" doesn't exist in the database" << std::endl;
              os << *iter_image << ";" << width << ";" << height << ";" << sCamName << ";" << sCamModel << std::endl;
            }
          }
          else
          {
            std::cout << "Sensor width database \"" << sfileDatabase << "\" doesn't exist." << std::endl;
            std::cout << "Please consider add your camera model in the database." << std::endl;
            os << *iter_image << ";" << width << ";" << height << ";" << sCamName << ";" << sCamModel << std::endl;
          }
        }
      std::cout << os.str();
      listTXT << os.str();
    }
  }
  listTXT.close();
  return EXIT_SUCCESS;
}