示例#1
0
int SaisieAppuisInit_main(int argc,char ** argv)
{
  Pt2di aSzW(800,800);
  Pt2di aNbFen(-1,-1);
  std::string aFullName,aNamePt,anOri,anOut, aNameAuto, aPrefix2Add, aDir, aName, aModeOri;
  aNameAuto = "NONE";
  aPrefix2Add = "";
  bool aForceGray = true;
  double aZMoy,aZInc;

  SaisieAppuisInit(argc, argv, aSzW, aNbFen, aFullName, aDir, aName, aNamePt, anOri, aModeOri, anOut, aNameAuto, aPrefix2Add, aForceGray, aZMoy, aZInc);

  if (!MMVisualMode)
  {
      std::string aCom =     MMDir() +"bin/SaisiePts "
                          +  MMDir() +"include/XML_MicMac/SaisieInitiale.xml "
                          +  std::string(" DirectoryChantier=") + aDir
                          +  std::string(" +Image=") + QUOTE(aName)
                          +  std::string(" +Ori=") + anOri
                          +  std::string(" +NamePt=") + aNamePt
                          +  std::string(" +NameAuto=") + aNameAuto
                          +  std::string(" +Sauv=") + anOut
                          +  std::string(" +SzWx=") + ToString(aSzW.x)
                          +  std::string(" +SzWy=") + ToString(aSzW.y)
                          +  std::string(" +NbFx=") + ToString(aNbFen.x)
                          +  std::string(" +NbFy=") + ToString(aNbFen.y) ;

      if (aModeOri == "GRID")
      {
          aCom += " +ModeOriIm=eGeomImageGrille"
                  + std::string(" +Conik=false")
                  +  std::string(" +ZIncIsProp=false")
                  //+ " +PostFixOri=GRIBin"
                  + " +Px1Inc="+ ToString(aZInc) + std::string(" ")
                  + " +Px1Moy="+ ToString(aZMoy) + std::string(" ");

          //aCom += std::string(" +Geom=eGeomMNTFaisceauIm1ZTerrain_Px1D");
      }

      if (EAMIsInit(&aForceGray))
         aCom = aCom + " +ForceGray=" + ToString(aForceGray);

      if (EAMIsInit(&aPrefix2Add))
         aCom = aCom + " +Pref2Add=" + aPrefix2Add;

      std::cout << aCom << "\n";

      int aRes = system(aCom.c_str());

      return aRes;
  }
  else
      return EXIT_SUCCESS;
}
示例#2
0
int MakeGrid_main(int argc,char ** argv)
{
    MMD_InitArgcArgv(argc,argv);

    NoInit = "XXXXXXXXXX";

    MemoArg(argc,argv);
    std::string  aDir,aPat,aFullDir;

    std::string AeroIn;
    std::string AeroOut;
    //std::vector<std::string> ImPl;

    ElInitArgMain
    (
    argc,argv,
    LArgMain()  << EAMC(aFullDir, "Full Directory (Dir+Pattern)", eSAM_IsPatFile)
                    << EAMC(AeroIn, "Input Orientation", eSAM_IsExistDirOri),
    LArgMain()
                    << EAM(AeroOut,"Out",true)
    );

    if (!MMVisualMode)
    {
        if (AeroOut=="")
           AeroOut = "Grid-"+AeroIn;

        #if (ELISE_windows)
            replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
        #endif
        SplitDirAndFile(aDir,aPat,aFullDir);


    #if (ELISE_windows)
        std::string aCom =     MMDir() + std::string("bin\\Apero ")
    #else
        std::string aCom =     MMDir() + std::string("bin/Apero ")
    #endif
                           +  MMDir() + std::string("include/XML_MicMac/AperoGrid.xml ")
                           + std::string(" DirectoryChantier=") +aDir +  std::string(" ")
                           + std::string(" +PatternAllIm=") + QUOTE(aPat) + std::string(" ")
                           + std::string(" +AeroOut=-") + AeroOut
                           + std::string(" +AeroIn=-") + AeroIn
                        ;

       std::cout << "Com = " << aCom << "\n";
       int aRes = system_call(aCom.c_str());


       return aRes;
    }
    else
        return EXIT_SUCCESS;
}
示例#3
0
void cElCompileFN::SetFile(const std::string & aPostFix, const char * anInclCompl)
{
    if (mFile)
       ElFclose(mFile);

    mNameFile = MMDir() + mNameDir + mNameClass + "." + aPostFix;
    mFile = ElFopen(mNameFile.c_str(),"w");
    if (mFile==0)
    {
        std::cout << "FOR FILE=[" << mNameFile << "]\n";
        ELISE_ASSERT(false,"Cannot open FILE in cElCompileFN");
    }


    mNameTagInclude = "_" + mNameClass + "_" + aPostFix + "_";

   (*this)<< "// File Automatically generated by eLiSe\n";

    // (*this)<< "#ifndef " << mNameTagInclude << "\n";
    // (*this)<< "#define " << mNameTagInclude << "\n\n";

    // cout << " --SUPPRIME -- #ifndef " << mNameTagInclude << "\n";
    // cout << " --SUPPRIME -- #define " << mNameTagInclude << "\n\n";

   (*this)<< "#include \"StdAfx.h\"\n";

    if (anInclCompl)
    {
       (*this)<< "#include \"" <<  mNameClass << "." << anInclCompl << "\"\n";
    }

    (*this)<< "\n\n";


}
示例#4
0
int GCPCtrl_main(int argc,char ** argv)
{
    // MemoArg(argc,argv);
    MMD_InitArgcArgv(argc,argv);
    std::string  aDir,aPat,aFullDir;


    std::string AeroIn;
    std::string DicoPts;
    std::string MesureIm;
    bool        CPI = false;
    bool ShowUnused = true;


    ElInitArgMain
    (
        argc,argv,
        LArgMain()  << EAMC(aFullDir,"Full name (Dir+Pat)", eSAM_IsPatFile)
                    << EAMC(AeroIn,"Orientation in", eSAM_IsExistDirOri)
                    << EAMC(DicoPts,"Ground Control Points File", eSAM_IsExistFile)
                    << EAMC(MesureIm,"Image Measurements File", eSAM_IsExistFile),
        LArgMain()
                    <<  EAM(CPI,"CPI",true,"when Calib Per Image has to be used", eSAM_IsBool)
                    <<  EAM(ShowUnused,"ShowU",true,"Show unused point (def=true)", eSAM_IsBool)
    );

    if (!MMVisualMode)
    {
    #if (ELISE_windows)
        replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
    #endif
    SplitDirAndFile(aDir,aPat,aFullDir);
    StdCorrecNameOrient(AeroIn,aDir);



    std::string aCom =   MM3dBinFile_quotes( "Apero" )
                       + ToStrBlkCorr( MMDir()+"include/XML_MicMac/Apero-GCP-Control.xml" )+" "
                       + std::string(" DirectoryChantier=") +aDir +  std::string(" ")
                       + std::string(" +PatternAllIm=") + QUOTE(aPat) + std::string(" ")
                       + std::string(" +AeroIn=") + AeroIn
                       + std::string(" +DicoApp=") +  DicoPts
                       + std::string(" +SaisieIm=") +  MesureIm
                    ;

    if (EAMIsInit(&ShowUnused)) aCom = aCom + " +ShowUnused=" + ToString(ShowUnused);
    if (CPI) aCom += " +CPI=true ";


    std::cout << "Com = " << aCom << "\n";
    int aRes = System(aCom.c_str(),false,true,true);


    return aRes;

    }
    else return EXIT_SUCCESS;
}
示例#5
0
void ContextMenu::createContextMenuActions()
{
    // Windows

    _AllW      = new QAction(tr("All Windows"), this);
    _RollW     = new QAction(tr("Roll Windows"), this);
    _ThisW     = new QAction(tr("This Window"), this);
    _ThisP     = new QAction(tr("This Point"),  this);

    _switchSignalMapper = new QSignalMapper (this);

    connect(_AllW,      	    SIGNAL(triggered()),   _switchSignalMapper, SLOT(map()));
    connect(_RollW,      	    SIGNAL(triggered()),   _switchSignalMapper, SLOT(map()));
    connect(_ThisW,             SIGNAL(triggered()),   _switchSignalMapper, SLOT(map()));
    connect(_ThisP,             SIGNAL(triggered()),   _switchSignalMapper, SLOT(map()));

    _switchSignalMapper->setMapping (_AllW,  eAllWindows);
    _switchSignalMapper->setMapping (_RollW, eRollWindows);
    _switchSignalMapper->setMapping (_ThisW, eThisWindow);
    _switchSignalMapper->setMapping (_ThisP, eThisPoint);

    connect (_switchSignalMapper, SIGNAL(mapped(int)), this, SLOT(changeImages(int)));

    // Point (state, HL, name)

    QString IconFolder = QString(MMDir().c_str()) + "data/ico/";

    _validate  = new QAction(QIcon(IconFolder + "smile.ico"),           tr("Validate"), this);
    _dubious   = new QAction(QIcon(IconFolder + "interrogation.ico"),   tr("Dubious") , this);
    _refuted   = new QAction(QIcon(IconFolder + "refuted.ico"),         tr("Refuted") , this);
    _noSaisie  = new QAction(QIcon(IconFolder + "vide.ico"),            tr("Not captured"), this);

    _highLight = new QAction(QIcon(IconFolder + "HL.ico"),              tr("Highlight"), this);

    _rename    = new QAction(tr("Rename"), this);

    connect(_rename,		    SIGNAL(triggered()),   this, SLOT(rename()));

    connect(_highLight,		    SIGNAL(triggered()),   this, SLOT(highlight()));

    _stateSignalMapper = new QSignalMapper (this);

    connect(_validate,		    SIGNAL(triggered()),   _stateSignalMapper, SLOT(map()));
    connect(_dubious,		    SIGNAL(triggered()),   _stateSignalMapper, SLOT(map()));
    connect(_refuted,		    SIGNAL(triggered()),   _stateSignalMapper, SLOT(map()));
    connect(_noSaisie,		    SIGNAL(triggered()),   _stateSignalMapper, SLOT(map()));

    _stateSignalMapper->setMapping (_validate,  eEPI_Valide);
    _stateSignalMapper->setMapping (_dubious,   eEPI_Douteux);
    _stateSignalMapper->setMapping (_refuted,   eEPI_Refute);
    _stateSignalMapper->setMapping (_noSaisie,  eEPI_NonSaisi);

    connect (_stateSignalMapper, SIGNAL(mapped(int)), this, SLOT(setPointState(int)));
}
示例#6
0
std::string Dir2Write(const std::string  DirChantier)
{
    static bool First = true;
    static std::string aRes;
    if (First)
    {
        First = false;

        aRes =  DirChantier + "Tmp-MM-Dir/TestOpenMMmmmm" + mm_getstrpid();
        if (TestFileOpen(aRes))
           return  DirChantier + "Tmp-MM-Dir/";

        aRes = DirChantier +  "TestOpenMMmmmm" + mm_getstrpid();
        if (TestFileOpen(aRes))
           return  DirChantier;

        for (int aK=0 ; aK<MemoArgc; aK++)
        {
            std::string aDir,aName;
            SplitDirAndFile(aDir,aName,MemoArgv[aK]);
            aRes = aDir + "TestOpenMMmmmm" + mm_getstrpid();
            if (TestFileOpen(aRes))
               return aDir;
        }


        aRes = MMDir() + "TestOpenMMmmmm"+mm_getstrpid();
        if (TestFileOpen(aRes))
           return MMDir();


        ELISE_ASSERT(false,"Cannot find any directoruy to write tmp files");
        
    }
   
    return aRes;
}
示例#7
0
int Drunk_main(int argc,char ** argv)
{

    //Testing the existence of argument (if not, print help file)
    if(!MMVisualMode && argc==1)
    {
        argv[1]=(char*)"";//Compulsory to call MMD_InitArgcArgv
        MMD_InitArgcArgv(argc,argv);
        string cmdhelp;
        cmdhelp=MMDir()+"bin/Drunk -help";
        system_call(cmdhelp.c_str());
    }
    else
    {
        MMD_InitArgcArgv(argc,argv);

        string aFullPattern,aOri;
        string DirOut="DRUNK/";
        bool Talk=true;

        //Reading the arguments
        ElInitArgMain
        (
            argc,argv,
            LArgMain()  << EAMC(aFullPattern,"Images Pattern", eSAM_IsPatFile)
                        << EAMC(aOri,"Orientation name", eSAM_IsExistDirOri),
            LArgMain()  << EAM(DirOut,"Out",true,"Output folder (end with /) and/or prefix (end with another char)")
                        << EAM(Talk,"Talk",true,"Turn on-off commentaries")
                    );

        //Processing the files
		string aPattern, aDir;
		SplitDirAndFile(aDir, aPattern, aFullPattern);
		StdCorrecNameOrient(aOri, aDir);
        Drunk(aPattern,aOri,DirOut,Talk);
    }

    return EXIT_SUCCESS;
}
示例#8
0
int Tawny_main(int argc,char ** argv)
{
    // MemoArg(argc,argv);
    MMD_InitArgcArgv(argc,argv);
    std::string  aDir;

    int mDeq = 1;
    Pt2di mDeqXY(-1,-1);
    bool mAddCste = false;
    int mDegRap = 0;
    Pt2di mDegRapXY(-1,-1);
    bool mRapGlobPhys = true;
    double mDynGlob=1.0;

    std::string mImPrio0 = ".*";
    int mSzV = 1;
    double mCorrThresh = 0.8;
    double mNbPerIm = 1e4;
    bool  DoL1Filter=false;

    double  aSatThresh = 1e9;
    string aNameOut="Ortho-Eg-Test-Redr.tif";

    ElInitArgMain
    (
    argc,argv,
    LArgMain()   << EAMC(aDir,"Data directory", eSAM_IsDir),
    LArgMain()   << EAM(mDeq,"DEq",true,"Degree of equalization (Def=1)")
                 << EAM(mDeqXY,"DEqXY",true,"Degree of equalization, if diff in X and Y")
                 << EAM(mAddCste,"AddCste",true,"Add unknown constant for equalization (Def=false)", eSAM_IsBool)
                 << EAM(mDegRap,"DegRap",true,"Degree of rappel to initial values, Def = 0")
                 << EAM(mDegRapXY,"DegRapXY",true,"Degree of rappel to initial values, Def = 0")
                 << EAM(mRapGlobPhys,"RGP",true,"Rappel glob on physically equalized, Def = true")
                 << EAM(mDynGlob,"DynG",true,"Global Dynamic (to correct saturation problems)")
                 << EAM(mImPrio0,"ImPrio",true,"Pattern of image with high prio, def=.*", eSAM_IsPatFile)
                 << EAM(mSzV,"SzV",true,"Sz of Window for equalization (Def=1, means 3x3)")
                 << EAM(mCorrThresh,"CorThr",true,"Threshold of correlation to validate homologous (Def 0.7)")
                 << EAM(mNbPerIm,"NbPerIm",true,"Average number of point per image (Def = 1e4)")
                 << EAM(DoL1Filter,"L1F",true,"Do L1 Filter on couple, def=true (change when process is blocked)", eSAM_IsBool)
                 << EAM(aSatThresh,"SatThresh",true,"Threshold determining saturation value (pixel >SatThresh will be ignored)")
                 << EAM(aNameOut,"Out",true,"Name of output file (in the folder)", eSAM_IsOutputFile)
    );

    if (!MMVisualMode)
    {
#if (ELISE_windows)
        replace( aDir.begin(), aDir.end(), '\\', '/' );
#endif

        if ( (!aDir.empty()) && (*aDir.rbegin() != '/') )
            aDir.append("/");

        if (! EAMIsInit(&mDeqXY))
            mDeqXY = Pt2di(mDeq,mDeq);

        if (! EAMIsInit(&mDegRapXY))
            mDegRapXY = Pt2di(mDegRap,mDegRap);

        Pt2di aDegCste = mAddCste  ? Pt2di(0,0) : Pt2di(-1,-1);

        MMD_InitArgcArgv(argc,argv);

        std::string aCom =    MM3dBinFile( "Porto" )
                + MMDir() +std::string("include/XML_MicMac/Param-Tawny.xml ")
                + std::string(" %WD=") + aDir
                + std::string(" +DR1X=") + ToString(mDeqXY.x)
                + std::string(" +DR1Y=") + ToString(mDeqXY.y)
                + std::string(" +DR0X=") + ToString(aDegCste.x)
                + std::string(" +DR0Y=") + ToString(aDegCste.y)
                + std::string(" +DegRapX=") + ToString(mDegRapXY.x)
                + std::string(" +DegRapY=") + ToString(mDegRapXY.y)
                + std::string(" +RapGlobPhys=") + ToString(mRapGlobPhys)
                + std::string(" +DynGlob=") + ToString(mDynGlob)
                + std::string(" +NameOrtho=") + aNameOut
                ;

        if (mImPrio0!="") aCom = aCom+ " +ImPrio="+QUOTE(mImPrio0);
        if (EAMIsInit(&mSzV)) aCom  = aCom + " +SzV=" + ToString(mSzV);
        if (EAMIsInit(&mNbPerIm)) aCom  = aCom + " +NbPerIm=" + ToString(mNbPerIm);
        if (EAMIsInit(&mCorrThresh)) aCom  = aCom + " +CorrThresh=" + ToString(mCorrThresh);

        if (!DoL1Filter) aCom  = aCom +" +DoL1Filter=false ";

        std::cout << aCom << "\n";
        int aRes = system_call(aCom.c_str());

        BanniereMM3D();
        return aRes;
    }
    else return EXIT_SUCCESS;
}
示例#9
0
void Drunk(string aFullPattern,string aOri,string DirOut, bool Talk)
{
    string aPattern,aNameDir;
    SplitDirAndFile(aNameDir,aPattern,aFullPattern);

    //Reading input files
    list<string> ListIm=RegexListFileMatch(aNameDir,aPattern,1,false);
    int nbIm=ListIm.size();
    if (Talk){cout<<"Images to process: "<<nbIm<<endl;}

    //Paralelizing (an instance of Drunk is called for each image)
    string cmdDRUNK;
    list<string> ListDrunk;
    if(nbIm!=1)
    {
        for(int i=1;i<=nbIm;i++)
        {
            string aFullName=ListIm.front();
            ListIm.pop_front();
            cmdDRUNK=MMDir() + "bin/Drunk " + aNameDir + aFullName + " " + aOri + " Out=" + DirOut + " Talk=0";
            ListDrunk.push_back(cmdDRUNK);
        }
        cEl_GPAO::DoComInParal(ListDrunk,aNameDir + "MkDrunk");

        //Calling the banner at the end
        if (Talk){Drunk_Banniere();}
    }else{

    //Bulding the output file system
    ELISE_fp::MkDirRec(aNameDir + DirOut);

    //Processing the image
    string aNameIm=ListIm.front();
    string aNameOut=aNameDir + DirOut + aNameIm + ".tif";

    //Loading the camera
    string aNameCam="Ori-"+aOri+"/Orientation-"+aNameIm+".xml";
    cInterfChantierNameManipulateur * anICNM = cInterfChantierNameManipulateur::BasicAlloc(aNameDir);
    CamStenope * aCam = CamOrientGenFromFile(aNameCam,anICNM);

    //Reading the image and creating the objects to be manipulated
    Tiff_Im aTF= Tiff_Im::StdConvGen(aNameDir + aNameIm,3,false);

    Pt2di aSz = aTF.sz();

    Im2D_U_INT1  aImR(aSz.x,aSz.y);
    Im2D_U_INT1  aImG(aSz.x,aSz.y);
    Im2D_U_INT1  aImB(aSz.x,aSz.y);
    Im2D_U_INT1  aImROut(aSz.x,aSz.y);
    Im2D_U_INT1  aImGOut(aSz.x,aSz.y);
    Im2D_U_INT1  aImBOut(aSz.x,aSz.y);

    ELISE_COPY
    (
       aTF.all_pts(),
       aTF.in(),
       Virgule(aImR.out(),aImG.out(),aImB.out())
    );

    U_INT1 ** aDataR = aImR.data();
    U_INT1 ** aDataG = aImG.data();
    U_INT1 ** aDataB = aImB.data();
    U_INT1 ** aDataROut = aImROut.data();
    U_INT1 ** aDataGOut = aImGOut.data();
    U_INT1 ** aDataBOut = aImBOut.data();

    //Parcours des points de l'image de sortie et remplissage des valeurs
    Pt2dr ptOut;
    for (int aY=0 ; aY<aSz.y  ; aY++)
    {
        for (int aX=0 ; aX<aSz.x  ; aX++)
        {
            ptOut=aCam->DistDirecte(Pt2dr(aX,aY));

            aDataROut[aY][aX] = Reechantillonnage::biline(aDataR, aSz.x, aSz.y, ptOut);
            aDataGOut[aY][aX] = Reechantillonnage::biline(aDataG, aSz.x, aSz.y, ptOut);
            aDataBOut[aY][aX] = Reechantillonnage::biline(aDataB, aSz.x, aSz.y, ptOut);

        }
    }

    Tiff_Im  aTOut
             (
                  aNameOut.c_str(),
                  aSz,
                  GenIm::u_int1,
                  Tiff_Im::No_Compr,
                  Tiff_Im::RGB
             );


     ELISE_COPY
     (
         aTOut.all_pts(),
         Virgule(aImROut.in(),aImGOut.in(),aImBOut.in()),
         aTOut.out()
     );
    }
}
示例#10
0
int GCPBascule_main(int argc,char ** argv)
{
    // MemoArg(argc,argv);
    MMD_InitArgcArgv(argc,argv);
    std::string  aDir,aPat,aFullDir;


    std::string AeroOut;
    std::string AeroIn;
    std::string DicoPts;
    std::string MesureIm;
    bool        ModeL1 = false;
    bool        CPI = false;
    bool ShowUnused = true;
    bool ShowDetail = false;
    bool NLDShow = false;
    bool NLDFTR = true;

    std::string aPatNLD;
    std::vector<std::string> NLDDegX;  NLDDegX.push_back("1");  NLDDegX.push_back("X"); NLDDegX.push_back("Y");
    std::vector<std::string> NLDDegY;  NLDDegY.push_back("1");  NLDDegY.push_back("X"); NLDDegY.push_back("Y");
    std::vector<std::string> NLDDegZ;  NLDDegZ.push_back("1");  NLDDegZ.push_back("X"); NLDDegZ.push_back("X2");
/*
    Pt3di NLDDegX(1,1,1);
    Pt3di NLDDegY(1,1,1);
    Pt3di NLDDegZ(2,0,2);
*/


    ElInitArgMain
    (
        argc,argv,
        LArgMain()  << EAMC(aFullDir,"Full name (Dir+Pat)", eSAM_IsPatFile)
                    << EAMC(AeroIn,"Orientation in", eSAM_IsExistDirOri)
                    << EAMC(AeroOut,"Orientation out", eSAM_IsOutputDirOri)
                    << EAMC(DicoPts,"Ground Control Points File", eSAM_IsExistFile)
                    << EAMC(MesureIm,"Image Measurements File", eSAM_IsExistFile),
        LArgMain()
                    <<  EAM(ModeL1,"L1",true,"L1 minimisation vs L2 (Def=false)", eSAM_IsBool)
                    <<  EAM(CPI,"CPI",true,"when Calib Per Image has to be used", eSAM_IsBool)
                    <<  EAM(ShowUnused,"ShowU",true,"Show unused point (def=true)", eSAM_IsBool)
                    <<  EAM(ShowDetail,"ShowD",true,"Show details (def=false)", eSAM_IsBool)
                    <<  EAM(aPatNLD,"PatNLD",true,"Pattern for Non linear deformation, with aerial like geometry (def,unused)")
                    <<  EAM(NLDDegX,"NLDegX",true,"Non Linear monoms for X, when PatNLD, (Def =[1,X,Y])")
                    <<  EAM(NLDDegY,"NLDegY",true,"Non Linear monoms for Y, when PatNLD, (Def =[1,X,Y])")
                    <<  EAM(NLDDegZ,"NLDegZ",true,"Non Linear monoms for Z, when PatNLD, (Def =[1,X,X2])")
                    <<  EAM(NLDFTR,"NLFR",true,"Non Linear : Force True Rot (Def=true)",eSAM_IsBool)
                    <<  EAM(NLDShow,"NLShow",true,"Non Linear : Show Details (Def=false)",eSAM_IsBool)
    );

    if (!MMVisualMode)
    {
    #if (ELISE_windows)
        replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
    #endif
    SplitDirAndFile(aDir,aPat,aFullDir);
    StdCorrecNameOrient(AeroIn,aDir);


    MMD_InitArgcArgv(argc,argv);

    std::string aCom =   MM3dBinFile_quotes( "Apero" )
                       + ToStrBlkCorr( MMDir()+"include/XML_MicMac/Apero-GCP-Bascule.xml" )+" "
                       + std::string(" DirectoryChantier=") +aDir +  std::string(" ")
                       + std::string(" +PatternAllIm=") + QUOTE(aPat) + std::string(" ")
                       + std::string(" +AeroIn=") + AeroIn
                       + std::string(" +AeroOut=") +  AeroOut
                       + std::string(" +DicoApp=") +  DicoPts
                       + std::string(" +SaisieIm=") +  MesureIm
                    ;

    if (EAMIsInit(&ShowUnused)) aCom = aCom + " +ShowUnused=" + ToString(ShowUnused);
    if (EAMIsInit(&ShowDetail)) aCom = aCom + " +ShowDetail=" + ToString(ShowDetail);

    if (ModeL1)
    {
        aCom = aCom+ std::string(" +L2Basc=") + ToString(!ModeL1);
    }

    if (CPI) aCom += " +CPI=true ";


    if (EAMIsInit(&aPatNLD))
    {
       aCom = aCom + " +UseNLD=true +PatNLD=" + QUOTE(aPatNLD)
                   + " +NLFlagX=" + ToString(FlagOfDeg(NLDDegX))
                   + " +NLFlagY=" + ToString(FlagOfDeg(NLDDegY))
                   + " +NLFlagZ=" + ToString(FlagOfDeg(NLDDegZ))
                   + " +NLDForceTR=" + ToString(NLDFTR)
                   + " +NLDShow=" + ToString(NLDShow)
              ;
    }


    std::cout << "Com = " << aCom << "\n";
    int aRes = System(aCom.c_str(),false,true,true);


    return aRes;

    }
    else return EXIT_SUCCESS;
}
示例#11
0
int SEL_main(int argc,char ** argv)
{
    MMD_InitArgcArgv(argc,argv);


    Pt2di aSzW(1000,900);
/*
    if (! ELISE_fp::exist_file(MMDir() + "bin/MICMACSaisieLiaisons"))
       VoidSystem("make -f MakeMICMAC  bin/MICMACSaisieLiaisons");
*/

    std::string aDir;
    std::string aN1;
    std::string aN2;
    std::string aKeyH;

    int aRedr=0;
    std::string aFilter="";
    bool aRedrL1 = false;
    bool ModeEpip = false;

    std::string aKeyCompl="Cple2HomAp";

    std::string SH="";
    ElInitArgMain
    (
           argc,argv,
           LArgMain() << EAMC(aDir,"Directory", eSAM_IsDir)
                      << EAMC(aN1,"First image name", eSAM_IsExistFile)
                      << EAMC(aN2,"Second image name", eSAM_IsExistFile) ,
           LArgMain() << EAM(aRedr,"R",true)
                      << EAM(aRedrL1,"RL1",true,"Estimate Homography using L1 mode")
                      << EAM(aFilter,"F",true)
                      << EAM(aKeyH,"KH",true,"In P PB PBR M S NB NT MMD",eSAM_None,ListOfVal(eTS_NbVals,"eTS_"))
                      << EAM(aKeyCompl,"KCpl",true)
                      << EAM(aSzW,"SzW",true)
                      << EAM(ModeEpip,"ModeEpip",true,"If mode epip, the y displacement are forced to 0")
                      << EAM(SH,"SH",true,"Homologue extenion for NB/NT mode")
    );

    if (!MMVisualMode)
    {

        std::string aCom =   MM3dBinFile("MICMACSaisieLiaisons")
                           // + MMDir()+std::string("applis/XML-Pattron/Pattron-MicMacLiaison.xml ")
                           + MMDir()+std::string("include/XML_MicMac/Pattron-MicMacLiaison.xml ")
                           + " WorkDir=" + aDir
                           + " %Im1=" + aN1
                           + " %Im2=" + aN2
                           + " %SL_XSzW=" + ToString(aSzW.x)
                           + " %SL_YSzW=" + ToString(aSzW.y)
                           + " %SL_Epip=" + ToString(ModeEpip)
                         ;

        if (aRedr)
           aCom = aCom + " SL_NewRedrCur=true";

        if (aRedrL1)
           aCom = aCom + " SL_L2Estim=false";

       if (aFilter!="")
           aCom = aCom
                  /* + " SL_TJS_FILTER=true" */
              +  " SL_FILTER=" +aFilter;

       if (aKeyH!="")
       {
           if (aKeyH=="P")
           {
              aKeyCompl = "PastisHom";
           }
           else if (aKeyH=="PB")
           {
              aKeyCompl = "Key-Assoc-CpleIm2HomolPastisBin";
           }
           else if (aKeyH=="PBR")
           {
              aKeyCompl = "Key-Assoc-SsRes-CpleIm2HomolPastisBin";
           }
           else if (aKeyH=="M")
           {
              aKeyCompl = "MarcHom";
           }
           else if (aKeyH=="S")
           {
              // aKeyCompl = "Key-Assoc-StdHom";
              aKeyCompl = "NKS-Assoc-CplIm2Hom@-Man@xml";
           }
           else if (aKeyH=="NB")
           {
              aKeyCompl = "NKS-Assoc-CplIm2Hom@"+SH+"@dat";
           }
           else if (aKeyH=="NT")
           {
              aKeyCompl = "NKS-Assoc-CplIm2Hom@"+SH+"@txt";
           }
           else if (aKeyH=="MMD")
           {
              aKeyCompl = "NKS-Assoc-CplIm2Hom@-DenseM@dat";
           }
           else
           {
               std::cout << "For Key=[" << aKeyH << "]\n";
               ELISE_ASSERT(false,"Do Not know key");
           }
       }

       aCom = aCom + " FCND_CalcHomFromI1I2=" + aKeyCompl;


        std::cout << aCom << "\n";
        Sys(aCom);
        Banniere_SEL();

        return 0;
    }
    else
        return EXIT_SUCCESS;
}
示例#12
0
int AperiCloud_main(int argc,char ** argv)
{
    MMD_InitArgcArgv(argc,argv);
    std::string  aDir,aPat,aFullDir;

    std::string AeroIn;
    //std::vector<std::string> ImPl;
    int ExpTxt=0;
    int PlyBin=1;
    bool CalPerIm=false;
    std::string Out="";

    int RGB = -1;
    double aSeuilEc = 10.0;
    double aLimBsH;
    bool   WithPoints = true;
    bool   WithCam = true;
    Pt2dr  aFocs;
    Pt3di aColCadre(255,0,0);
    Pt3di aColRay(0,255,0);
    std::string aSetHom="";
    std::string aKeyCalcName;

    ElInitArgMain
    (
               argc,argv,
               LArgMain()  << EAMC(aFullDir,"Full name (Dir+Pattern)", eSAM_IsPatFile)
                    << EAMC(AeroIn,"Orientation directory", eSAM_IsExistDirOri),
               LArgMain()
                    << EAM(ExpTxt,"ExpTxt",true,"Point in txt format ? (Def=false)", eSAM_IsBool)
                    << EAM(Out,"Out",true,"Result (Def=AperiCloud.ply)", eSAM_IsOutputFile)
                    << EAM(PlyBin,"Bin",true,"Ply in binary mode (Def=true)", eSAM_IsBool)
                    << EAM(RGB,"RGB",true,"Use RGB image to texturate points (Def=true)")
                    << EAM(aSeuilEc,"SeuilEc",true,"Max residual (Def=10)")
                    << EAM(aLimBsH,"LimBsH",true,"Limit ratio base to height (Def=1e-2)", eSAM_NoInit)
                    << EAM(WithPoints,"WithPoints",true,"Do we add point cloud? (Def=true) ",eSAM_IsBool)
                    << EAM(CalPerIm,"CalPerIm",true,"If a calibration per image was used (Def=false)",eSAM_IsBool)
                    << EAM(aFocs,"Focs",true,"Interval of Focal")
                    << EAM(WithCam,"WithCam",true,"With Camera (Def=true)")
                    << EAM(aColCadre,"ColCadre",true,"Col of camera rect Def= 255 0 0 (Red)")
                    << EAM(aColRay,"ColRay",true,"Col of camera rect Def=  0 255 0 (Green)")
                    << EAM(aSetHom,"SH",true,"Set of Hom, Def=\"\", give MasqFiltered for result of HomolFilterMasq")
                    << EAM(aKeyCalcName,"KeyName",true,"Key to compute printed string (Def contain only digit)")
    );

    if (!MMVisualMode)
    {
        if (RGB >=0)
        {
            RGB = RGB ? 3  : 1;
        }

        string aXmlName="Apero-Cloud.xml";
/*
        if (CalPerIm)
        {
            aXmlName="Apero-Cloud-PerIm.xml";
        }
*/

#if (ELISE_windows)
        replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
#endif
        SplitDirAndFile(aDir,aPat,aFullDir);

        StdCorrecNameOrient(AeroIn,aDir);
        if (Out=="")
        {
            Out="AperiCloud_" + AeroIn + ".ply";
        }


        //std::string aCom =   MMDir() + std::string("bin" ELISE_STR_DIR  "Apero ")
        //                   + MMDir() + std::string("include" ELISE_STR_DIR "XML_MicMac" ELISE_STR_DIR "Apero-Cloud.xml ")
        std::string aCom =   MM3dBinFile_quotes("Apero")
                + ToStrBlkCorr( MMDir()+std::string("include" ELISE_STR_DIR "XML_MicMac" ELISE_STR_DIR)+ aXmlName)+" "
                + std::string(" DirectoryChantier=") +aDir +  std::string(" ")
                + std::string(" +PatternAllIm=") + QUOTE(aPat) + std::string(" ")
                + std::string(" +Ext=") + (ExpTxt?"txt":"dat")
                + std::string(" +AeroIn=-") + AeroIn
                + std::string(" +Out=") + Out
                + std::string(" +PlyBin=") + (PlyBin?"true":"false")
                + std::string(" +NbChan=") +  ToString(RGB)
                + std::string(" +SeuilEc=") +  ToString(aSeuilEc)
                ;

        if (EAMIsInit(&CalPerIm))
              aCom =  aCom + " +CalPerIm=" +ToString(CalPerIm);


        if (EAMIsInit(&aFocs))
        {
            aCom = aCom + " +FocMin=" + ToString(aFocs.x) + " +FocMax=" + ToString(aFocs.y);
        }

        if (EAMIsInit(&WithCam))
        {
            aCom = aCom + " +WithCam=" + ToString(WithCam) ;
        }

        if (EAMIsInit(&aColCadre))
        {
            aCom = aCom + " +ColCadre=" + StrP2Coul(aColCadre) ;
        }
        if (EAMIsInit(&aColRay))
        {
            aCom = aCom + " +ColRay=" + StrP2Coul(aColRay) ;
        }

        if (! WithPoints)
        {
            aCom = aCom + std::string(" +KeyAssocImage=NKS-Assoc-Cste@NoPoint");
        }

        StdCorrecNameHomol(aSetHom,aDir);
        if (EAMIsInit(&aSetHom))
            aCom = aCom + std::string(" +SetHom=") + aSetHom;


        if (EAMIsInit(&aKeyCalcName))
        {
              aCom = aCom + " +WithCalcName=true +CalcName=" + aKeyCalcName;
        }
        

        if (EAMIsInit(&aLimBsH))
            aCom = aCom + std::string(" +LimBsH=") + ToString(aLimBsH);

        std::cout << "Com = " << aCom << "\n";
        int aRes = System(aCom.c_str());

        return aRes;
    }
    else
        return EXIT_SUCCESS;
}
void Apero2PMVS(string aFullPattern, string aOri)
{
    string aPattern,aNameDir;
    SplitDirAndFile(aNameDir,aPattern,aFullPattern);

    //Bulding the output file system
    ELISE_fp::MkDirRec(aNameDir + "pmvs-"+ aOri +"/models/");
    ELISE_fp::MkDir(aNameDir + "pmvs-"+ aOri +"/visualize/");
    ELISE_fp::MkDir(aNameDir + "pmvs-"+ aOri +"/txt/");

    //Reading the list of input files
    list<string> ListIm=RegexListFileMatch(aNameDir,aPattern,1,false);
    int nbIm=ListIm.size();
    cout<<"Images to process: "<<nbIm<<endl;

    string cmdDRUNK,cmdConv;
    list<string> ListDrunk,ListConvert;

    cInterfChantierNameManipulateur * anICNM = cInterfChantierNameManipulateur::BasicAlloc(aNameDir);
    //Computing PMVS orientations and writing lists of DRUNK and Convert commands
    for(int i=0;i<nbIm;i++)
    {
        //Reading the images list
        string aFullName=ListIm.front();
        cout<<aFullName<<" ("<<i+1<<" of "<<nbIm<<")"<<endl;
        ListIm.pop_front();

        //Creating the numerical format for the output files names
        char nb[9];
        sprintf(nb, "%08d", i);

        //Creating the lists of DRUNK and Convert commands
        cmdDRUNK=MMDir() + "bin/Drunk " + aNameDir + aFullName + " " + aOri + " Out=" + "pmvs-" + aOri + "/visualize/ Talk=0";
        ListDrunk.push_back(cmdDRUNK);
        #if (ELISE_unix || ELISE_Cygwin || ELISE_MacOs)
            cmdConv="convert ephemeral:" + aNameDir + "pmvs-" + aOri + "/visualize/" + aFullName + ".tif " + aNameDir + "pmvs-"+ aOri +"/visualize/"+(string)nb + ".jpg";
        #endif
        #if (ELISE_windows)
            cmdConv=MMDir() + "binaire-aux/convert ephemeral:" + aNameDir + "pmvs-" + aOri + "/visualize/" + aFullName + ".tif " + aNameDir + "pmvs-"+ aOri +"/visualize/"+(string)nb + ".jpg";
        #endif
        ListConvert.push_back(cmdConv);

        //Formating the camera name
        string aNameCam="Ori-"+aOri+"/Orientation-"+aFullName+".xml";

        //Loading the camera
        CamStenope * aCS = CamOrientGenFromFile(aNameCam,anICNM);

        //Compute the Computer Vision calibration matrix
        ElMatrix<double> P(4,3,0.0);//Orientation (int & ext) matrix in the CV system
        P=OriMatrixConvertion(aCS);

        //Write the matrix in the PMVS fashion
        string oriFileName=aNameDir + "pmvs-"+ aOri +"/txt/"+(string)nb+".txt";
        FILE *f = fopen(oriFileName.c_str(), "w");

        fprintf(f,"CONTOUR\n");
        fprintf(f,"%0.6f %0.6f %0.6f %0.6f\n", P(0,0),P(1,0),P(2,0),P(3,0));
        fprintf(f,"%0.6f %0.6f %0.6f %0.6f\n", P(0,1),P(1,1),P(2,1),P(3,1));
        fprintf(f,"%0.6f %0.6f %0.6f %0.6f\n", P(0,2),P(1,2),P(2,2),P(3,2));
        fclose(f);

        delete aCS;
        // delete anICNM; => OBJET A NE PAS DETRUIRE ...
    }//end of "for each image"

    //Undistorting the images with Drunk
    cout<<"Undistorting the images with Drunk"<<endl;
    cEl_GPAO::DoComInParal(ListDrunk,aNameDir + "MkDrunk");

    //Converting into .jpg (pmvs can't use .tif) with Convert
    cout<<"Converting into .jpg"<<endl;
    cEl_GPAO::DoComInParal(ListConvert,aNameDir + "MkConvert");

    // Write the options file with basic parameters
    cout<<"Writing the option file"<<endl;
    string optFileName=aNameDir + "pmvs-"+ aOri +"/pmvs_options.txt";
    FILE *f_opt = fopen(optFileName.c_str(), "w");

    fprintf(f_opt, "level 1\n");
    fprintf(f_opt, "csize 2\n");
    fprintf(f_opt, "threshold 0.7\n");
    fprintf(f_opt, "wsize 7\n");
    fprintf(f_opt, "minImageNum 3\n");
    fprintf(f_opt, "CPU 4\n");
    fprintf(f_opt, "setEdge 0\n");
    fprintf(f_opt, "useBound 0\n");
    fprintf(f_opt, "useVisData 0\n");
    fprintf(f_opt, "sequence -1\n");
    fprintf(f_opt, "timages -1 0 %d\n", nbIm);
    fprintf(f_opt, "oimages -3\n");

    fclose(f_opt);

    Apero2PMVS_Banniere();
}
int  SaisieAppuisPredic_main(int argc,char ** argv)
{
    Pt2di aSzW(800,800);
    Pt2di aNbFen(-1,-1);
    std::string aFullName,aNamePt,anOri, aModeOri, aNameMesure, aDir, aName;
    std::string aMasq3D,aPIMsFilter;
    bool aForceGray = true;
    double aZMoy,aZInc;
    std::string aInputSec;

    double aFlou=0.0;

    std::string aTypePts="Pts";

    SaisieAppuisPredic(argc, argv, aSzW, aNbFen, aFullName, aDir, aName, aNamePt, anOri, aModeOri, aNameMesure, aTypePts,aMasq3D,aPIMsFilter, aFlou, aForceGray, aZMoy, aZInc,aInputSec);

    if(!MMVisualMode)
    {
        std::string aCom =     MMDir() +"bin/SaisiePts "
                +  MMDir() +"include/XML_MicMac/SaisieAppuisPredic.xml "
                +  std::string(" DirectoryChantier=") + aDir
                +  std::string(" +Images=") + QUOTE(aName)
                +  std::string(" +Ori=") + anOri
                +  std::string(" +LargeurFlou=") + ToString(aFlou)
                +  std::string(" +Terrain=") + aNamePt
                +  std::string(" +Sauv=") + aNameMesure
                +  std::string(" +SzWx=") + ToString(aSzW.x)
                +  std::string(" +SzWy=") + ToString(aSzW.y)
                +  std::string(" +NbFx=") + ToString(aNbFen.x)
                +  std::string(" +NbFy=") + ToString(aNbFen.y)
                +  std::string(" +TypePts=") + aTypePts;

        if (aModeOri == "GRID")
        {
            aCom += " +ModeOriIm=eGeomImageGrille"
                    + std::string(" +Conik=false")
                    +  std::string(" +ZIncIsProp=false")
                    //+ " +PostFixOri=GRIBin"
                    + " +Px1Inc="+ ToString(aZInc) + std::string(" ")
                    + " +Px1Moy="+ ToString(aZMoy) + std::string(" ");

            //aCom += std::string(" +Geom=eGeomMNTFaisceauIm1ZTerrain_Px1D");
        }

       if (EAMIsInit(&aMasq3D))
          aCom = aCom + std::string(" +WithMasq3D=true +Masq3D=")+aMasq3D;

       if (EAMIsInit(&aPIMsFilter))
          aCom = aCom + std::string(" +WithPIMsFilter=true +PIMsFilter=")+aPIMsFilter;

        if (EAMIsInit(&aFlou))
            aCom = aCom + std::string(" +FlouSpecified=true");
        if (EAMIsInit(&aTypePts))
            aCom = aCom + std::string(" +TypeGlobEcras=true");
        if (EAMIsInit(&aForceGray))
           aCom = aCom + " +ForceGray=" + ToString(aForceGray);

        if (EAMIsInit(&aInputSec))
        {
           aCom = aCom + " +WithInputSec=true  +InputSec=" + aInputSec + " ";
        }

        std::cout << aCom << "\n";

        int aRes = system(aCom.c_str());

        return aRes;
    }
    else
        return EXIT_SUCCESS;
}
示例#15
0
vector<ArsenicImage> LoadGrpImages(string aDir, std::string aPatIm, int ResolModel, string InVig)
{
    cInterfChantierNameManipulateur * aICNM = cInterfChantierNameManipulateur::BasicAlloc(aDir);
    const std::vector<std::string> * aSetIm = aICNM->Get(aPatIm);
    std::vector<std::string> aVectIm=*aSetIm;

    //Scaling the images the comply with MM-Initial-Model
    list<string> ListConvert, ListVig;
    vector<std::string> VectImSc,VectMasq;
    int nbIm=aVectIm.size();
    char ResolModelch[3];sprintf(ResolModelch, "%02d", ResolModel);string ResolModelStr=(string)ResolModelch;
    if(ResolModel<10){ResolModelStr=ResolModelStr.substr(1,1);}
    //If a vignette correction folder is entered
    string postfix="";
    if(InVig!=""){
        string cmdVig=MMDir() + "bin/mm3d Vodka \"" + aPatIm + "\" DoCor=1 Out=" + InVig + " InCal=" + InVig;
        postfix="_Vodka.tif";
        ListVig.push_back(cmdVig);
        cEl_GPAO::DoComInParal(ListVig,aDir + "MkVig");
    }

    //Finding the appropriate NuageImProf_STD-MALT_Etape_[0-9].xml for the ResolModel :
    string aEtape=FindMaltEtape(ResolModel, aDir + (aVectIm)[0], "MM-Malt-Img-" + StdPrefix(aVectIm[0]) + "/NuageImProf_STD-MALT_Etape_[0-9].xml");

    //Reading images and Masq
    for (int aK1=0 ; aK1<nbIm ; aK1++)
    {
        string cmdConv=MMDir() + "bin/ScaleIm " + InVig + (aVectIm)[aK1] + postfix + " " + ResolModelStr + " F8B=1 Out=" + (aVectIm)[aK1] + "_Scaled.tif";
        ListConvert.push_back(cmdConv);

        //VectMasq.push_back("Masq-TieP-" + (aVectIm)[aK1] + "/RN" + (aVectIm)[aK1] + "_Masq.tif");
        VectMasq.push_back("MM-Malt-Img-" + StdPrefix((aVectIm)[aK1]) + "/AutoMask_STD-MALT_Num_" + aEtape + ".tif");
        //VectMasq.push_back("MM-Malt-Img-" + StdPrefix((aVectIm)[aK1]) + "/Masq_STD-MALT_DeZoom" + ResolModelStr + ".tif");
        //cout<<VectMasq[aK1]<<endl;
        VectImSc.push_back((aVectIm)[aK1]+std::string("_Scaled.tif"));
    }
    cEl_GPAO::DoComInParal(ListConvert,aDir + "MkScale");


    //Reading the infos
    vector<ArsenicImage> aGrIm;

    for (int aK1=0 ; aK1<int(nbIm) ; aK1++)
    {
        ArsenicImage aIm;
        //reading 3D info
        //cElNuage3DMaille * info3D1 = cElNuage3DMaille::FromFileIm("MM-Malt-Img-" + StdPrefix(aVectIm[aK1]) + "/NuageImProf_STD-MALT_Etape_1.xml");
        cElNuage3DMaille * info3D1 = cElNuage3DMaille::FromFileIm("MM-Malt-Img-" + StdPrefix(aVectIm[aK1]) + "/NuageImProf_STD-MALT_Etape_" + aEtape + ".xml");

        aIm.info3D=info3D1;

        Tiff_Im aTF1= Tiff_Im::StdConvGen(aDir + VectImSc[aK1],3,false);
        Tiff_Im aTFM= Tiff_Im::StdConvGen(aDir + VectMasq[aK1],1,false);
        Pt2di aSz = aTF1.sz();
        Im2D_REAL4  aIm1R(aSz.x,aSz.y);
        Im2D_REAL4  aIm1G(aSz.x,aSz.y);
        Im2D_REAL4  aIm1B(aSz.x,aSz.y);
        Im2D_INT1  aMasq(aSz.x,aSz.y);
        ELISE_COPY
            (
                aTF1.all_pts(),
                aTF1.in(),
                Virgule(aIm1R.out(),aIm1G.out(),aIm1B.out())
            );

        ELISE_COPY
            (
                aTFM.all_pts(),
                aTFM.in(),
                aMasq.out()
            );

        aIm.Mask=aMasq;
        aIm.RChan=aIm1R;
        aIm.GChan=aIm1G;
        aIm.BChan=aIm1B;
        aIm.SZ=aSz;
        aGrIm.push_back(aIm);
    }

    return aGrIm;
}
int SBGlobBascule_main(int argc,char ** argv)
{
    NoInit = "NoP1P2";
    aNoPt = Pt2dr(123456,-8765432);

    // MemoArg(argc,argv);
    MMD_InitArgcArgv(argc,argv);
    std::string  aDir,aPat,aFullDir;
    bool ExpTxt=false;
    std::string AeroIn;
    std::string AeroOut;
    std::string PostPlan="_Masq";
    std::string FileMesures ;
    std::string TargetRep = "ki" ;
    bool  CPI = false;


    double DistFE = 0;
    //Pt3dr  Normal;
    //Pt3dr  SNormal;

    ElInitArgMain
    (
    argc,argv,
    LArgMain()  << EAMC(aFullDir,"Full name (Dir+Pat)", eSAM_IsPatFile )
                    << EAMC(AeroIn,"Orientation in", eSAM_IsExistDirOri)
                    << EAMC(FileMesures,"Images measures xml file", eSAM_IsExistFile)
                    << EAMC(AeroOut,"Out : orientation ", eSAM_IsOutputDirOri),
    LArgMain()
                    << EAM(ExpTxt,"ExpTxt",true)
                    << EAM(PostPlan,"PostPlan",true)
                    << EAM(DistFE,"DistFS",true,"Distance between Ech1 and Ech2 to fix scale (if not given no scaling)")
                    << EAM(TargetRep,"Rep",true,"Target coordinate system (Def = ki, ie normal is vertical)")
                    << EAM(CPI,"CPI",true,"Calibration Per Image (Def=false)")

    );

    if (!MMVisualMode)
    {
#if (ELISE_windows)
        replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
#endif
        SplitDirAndFile(aDir,aPat,aFullDir);
        if (EAMIsInit(&PostPlan))
        {
            CorrecNameMasq(aDir,aPat,PostPlan);
        }

        StdCorrecNameOrient(AeroIn,aDir);


        MMD_InitArgcArgv(argc,argv);

        std::string aCom =   MM3dBinFile( "Apero" )
                + MMDir() + std::string("include/XML_MicMac/Apero-SB-Bascule.xml ")
                + std::string(" DirectoryChantier=") +aDir +  std::string(" ")
                + std::string(" +PatternAllIm=") + QUOTE(aPat) + std::string(" ")
                + std::string(" +AeroOut=-") +  AeroOut
                + std::string(" +Ext=") + (ExpTxt?"txt":"dat")
                + std::string(" +AeroIn=-") + AeroIn
                + std::string(" +PostMasq=") + PostPlan
                + std::string(" +DistFE=") + ToString(DistFE)
                + std::string(" +RepNL=") + TargetRep
                + std::string(" +FileMesures=") + FileMesures
                + std::string(" +CPI=") + ToString(CPI)
                ;



        std::cout << "Com = " << aCom << "\n";
        int aRes = system_call(aCom.c_str());


        return aRes;
    }
    else
    {
        return EXIT_SUCCESS;
    }
}
void RotateImage(double alpha, Pt2di aSzOut, vector<Pt2dr> Pts , string aNameDir, string aNameIm)
{
    cout<<"Rotating "<<aNameIm<<endl;
    string aNameOut=aNameDir + "Croped_images/" + aNameIm + ".tif";

    //Reading the image and creating the objects to be manipulated
    Tiff_Im aTF= Tiff_Im::StdConvGen(aNameDir + aNameIm,1,false);

    Pt2di aSz = aTF.sz();
    Pt2dr P1Cor=Rot2D(alpha, Pts[0], Pts[1]); //P1Cor.x=cos(alpha)*(Pts[0].x-Pts[1].x)+sin(alpha)*(Pts[0].y-Pts[1].y)+Pts[1].x; P1Cor.y=-sin(alpha)*(Pts[0].x-Pts[1].x)+cos(alpha)*(Pts[0].y-Pts[1].y)+Pts[1].y;
    Pt2dr P3Cor=Rot2D(alpha, Pts[2], Pts[1]); //P3Cor.x=cos(alpha)*(Pts[2].x-Pts[1].x)+sin(alpha)*(Pts[2].y-Pts[1].y)+Pts[1].x; P3Cor.y=-sin(alpha)*(Pts[2].x-Pts[1].x)+cos(alpha)*(Pts[2].y-Pts[1].y)+Pts[1].y;

    Im2D_U_INT1  aImR(aSz.x,aSz.y);
    //Im2D_U_INT1  aImG(aSz.x,aSz.y);
    //Im2D_U_INT1  aImB(aSz.x,aSz.y);
    Im2D_U_INT1  aImROut(aSzOut.x,aSzOut.y);
    Im2D_U_INT1  aImGOut(aSzOut.x,aSzOut.y);
    Im2D_U_INT1  aImBOut(aSzOut.x,aSzOut.y);

    ELISE_COPY
    (
       aTF.all_pts(),
       aTF.in(),
       aImR.out()//Virgule(aImR.out(),aImG.out(),aImB.out())
    );

    U_INT1 ** aDataR = aImR.data();
    //U_INT1 ** aDataG = aImG.data();
    //U_INT1 ** aDataB = aImB.data();
    U_INT1 ** aDataROut = aImROut.data();
    U_INT1 ** aDataGOut = aImGOut.data();
    U_INT1 ** aDataBOut = aImBOut.data();

    //Parcours des points de l'image de sortie et remplissage des valeurs
    Pt2dr ptOut;
    Pt2di imageTopCorner, imageBottomCorner;
    imageTopCorner.x = (int)(P1Cor.x + 0.5) + (int)(max(abs(P1Cor.x - Pts[1].x), abs(P1Cor.x - P3Cor.x)) - aSzOut.x) / 2;
    imageTopCorner.y = (int)(P1Cor.y + 0.5) + (int)(max(abs(P3Cor.y - Pts[1].y), abs(P1Cor.y - P3Cor.y)) - aSzOut.y) / 2;
    imageBottomCorner.x = imageTopCorner.x + aSzOut.x;
    imageBottomCorner.y = imageTopCorner.y + aSzOut.y;

    for (int aY=imageTopCorner.y ; aY<imageBottomCorner.y  ; aY++)
    {
        for (int aX=imageTopCorner.x ; aX<imageBottomCorner.x  ; aX++)
        {
            ptOut.x=cos(-alpha)*(aX-Pts[1].x)+sin(-alpha)*(aY-Pts[1].y)+Pts[1].x;
            ptOut.y=-sin(-alpha)*(aX-Pts[1].x)+cos(-alpha)*(aY-Pts[1].y)+Pts[1].y;
            aDataROut[aY-imageTopCorner.y][aX-imageTopCorner.x] = Reechantillonnage::biline(aDataR, aSz.x, aSz.y, ptOut);
            aDataGOut[aY-imageTopCorner.y][aX-imageTopCorner.x] = Reechantillonnage::biline(aDataR, aSz.x, aSz.y, ptOut);
            aDataBOut[aY-imageTopCorner.y][aX-imageTopCorner.x] = Reechantillonnage::biline(aDataR, aSz.x, aSz.y, ptOut);
        }
    }

    Tiff_Im  aTOut
    (
         aNameOut.c_str(),
         aSzOut,
         GenIm::u_int1,
         Tiff_Im::No_Compr,
         Tiff_Im::RGB
    );


    ELISE_COPY
    (
        aTOut.all_pts(),
        Virgule(aImROut.in(),aImGOut.in(),aImBOut.in()),
        aTOut.out()
    );

    #if (ELISE_unix || ELISE_Cygwin || ELISE_MacOs)
    string aCom="convert ephemeral:" + aNameDir + "Croped_images/" + aNameIm + ".tif " + aNameDir + "Croped_images/" + aNameIm;
    system_call(aCom.c_str());
    #endif
    #if (ELISE_windows)
        string aCom=MMDir() + "binaire-aux/convert ephemeral:" + aNameDir + "Croped_images/" + aNameIm + ".tif " + aNameDir + "Croped_images/" + aNameIm;
        system_call(aCom.c_str());
    #endif

}
示例#18
0
cAppliTarama::cAppliTarama(int argc,char ** argv) :
    cAppliWithSetImage(argc-1,argv+1,0)
{
    NoInit = "XXXXXXXXXX";

    // MemoArg(argc,argv);
    MMD_InitArgcArgv(argc,argv);
    std::string  aDir,aPat,aFullDir;
    std::string Aero;
    int  Zoom = 8;
    std::string  NOREP = "NO-REPERE";
    std::string Repere = NOREP;
    std::string DirOut = "TA";
    double   aZMoy = 0;
    int    aKNadir = -1;
    double aIncidMax = 1e5;
    bool   UnUseAXC = false;


    ElInitArgMain
    (
    argc,argv,
    LArgMain()  << EAMC(aFullDir,"Full Image (Dir+Pat)", eSAM_IsPatFile)
                    << EAMC(Aero,"Orientation", eSAM_IsExistDirOri),
    LArgMain()
                    << EAM(Zoom,"Zoom",true,"Resolution, (Def=8, must be pow of 2)",eSAM_IsPowerOf2)
                    << EAM(Repere,"Repere",true,"Local coordinate system as created with RepLocBascule",eSAM_IsExistFile)
                    << EAM(DirOut,"Out",true,"Directory for output (Deg=TA)")
                    << EAM(aZMoy,"ZMoy",true,"Average value of Z")
                    << EAM(aKNadir,"KNadir",true,"KBest image or Nadir (when exist)")
                    << EAM(aIncidMax,"IncMax",true,"Maximum incidence of image", eSAM_NoInit)
                    << EAM(UnUseAXC,"UnUseAXC",true,"Internal use for unanamorphosed ortho",eSAM_InternalUse)
    );

    if (!MMVisualMode)
    {
#if (ELISE_windows)
        replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
#endif
        SplitDirAndFile(aDir,aPat,aFullDir);

        StdCorrecNameOrient(Aero,aDir);


        MMD_InitArgcArgv(argc,argv);

        std::string aCom =  MM3dBinFile( "MICMAC" )
                + MMDir() + std::string("include/XML_MicMac/MM-TA.xml ")
                + std::string(" WorkDir=") +aDir +  std::string(" ")
                + std::string(" +PatternAllIm=") + QUOTE(aPat) + std::string(" ")
                + std::string(" +Zoom=") + ToString(Zoom)
                + std::string(" +Aero=") + Aero
                + std::string(" +DirMEC=") + DirOut
                ;

        if (EAMIsInit(&aIncidMax))
        {
            aCom = aCom + " +DoIncid=true +IncidMax=" + ToString(aIncidMax) + " " + " +ZMoy=" + ToString(AltiMoy()) + " " ;
;
        }

        if (EAMIsInit(&aKNadir))
            aCom = aCom + " +KBestMasqNadir=" + ToString(aKNadir);

        if (EAMIsInit(&aZMoy))
        {
            aCom = aCom + " +FileZMoy=File-ZMoy.xml"
                    + " +ZMoy=" + ToString(aZMoy);
        }
        if (EAMIsInit(&UnUseAXC)) aCom = aCom + " +UnUseAXC=" + ToString(UnUseAXC);

        if (Repere!=NOREP)
        {
            bool IsOrthoXCste;
            bool IsAnamXsteOfCart;
            if (RepereIsAnam(aDir+Repere,IsOrthoXCste,IsAnamXsteOfCart))
            {
                aCom =    aCom
                        +  std::string(" +DoAnam=true ")
                        +  std::string(" +DoIncid=true ")
                        +  std::string(" +ParamAnam=") + Repere;
            }
            else
            {
                aCom =     aCom    + std::string(" +Repere=") + Repere ;
            }
        }

#if (ELISE_windows)
		aCom = "\"" + aCom + "\"";
#endif		
        std::cout << "Com = " << aCom << "\n";
        mResult = system_call(aCom.c_str());

    }
    else
    {
       mResult = EXIT_SUCCESS;
    }
}
int saisieAppuisInitQT_main(QApplication &app, int argc, char *argv[])
{
    app.setApplicationName("SaisieAppuisInitQT");
    app.setOrganizationName("Culture3D");

    QStringList cmdline_args = QCoreApplication::arguments();

    if (cmdline_args.back().contains("help"))
    {
        QString help = "Mandatory unnamed args :\n"
                 "* string :: {Full name (Dir+Pattern)}\n"
                 "* string :: {Orientation ; NONE if not used}\n"
                 "* string :: {Point name, or point file name}\n"
                 "* string :: {Output}\n\n"
                "Named args :\n"
                "* [Name=SzW] Pt2di :: {Sz of window}\n"
                "* [Name=NbF] Pt2di :: {Nb of sub window}\n"
                "* [Name=NameAuto] string :: {Prefix for automatic point creation}\n"
                //"* [Name=Pref2Add] string :: {Prefix to add during import (for bug correction ?)}\n"
                "* [Name=ForceGray] bool :: {Force gray image, def=false}\n"
                "* [Name=OriMode] string :: {Orientation type (GRID) (Def=Std)}\n"
                "* [Name=ZMoy] REAL :: {Average Z, Mandatory in PB}\n"
                "* [Name=ZInc] REAL :: {Incertitude on Z, Mandatory in PB}\n\n"

                "Example:\nmm3d " + app.applicationName() + " IMG_558{0-9}[1].tif RadialBasic 100 measures.xml\n\n"
                "NB: visual interface for argument edition available with command:\n\n mm3d v" + app.applicationName() + "\n\n";

        return helpMessage(app, help);
    }

    loadTranslation(app);

    QSettings settings(QApplication::organizationName(), QApplication::applicationName());

    if ((argc>0)&&(string(argv[0]).find("SaisieQT")!= string::npos))
    {
        argv++;
        argc--;
    }

    Pt2di aSzWin(800,800);
    Pt2di aNbFen(-1,-1);

    string aFullName, aDir, aName, aNamePt, aNameOut;   //mandatory arguments
    string aNameOri, aModeOri, aNameAuto, aPrefix2Add;  //named args
    aPrefix2Add = "";
    bool aForceGray = false;

    settings.beginGroup("Misc");
    aNameAuto = settings.value("defPtName", QString("100")).toString().toStdString();
    settings.endGroup();

    settings.beginGroup("Drawing settings");
    aForceGray = settings.value("forceGray", false       ).toBool();
    settings.endGroup();

    double aZInc, aZMoy;

    if (argv[0][0] == 'v')
    {
        MMVisualMode = true;
        argv[0] = (char*) "SaisieAppuisInitQT";
    }
    
    std::string aInputSec;

    SaisieAppuisInit(argc, argv, aSzWin, aNbFen, aFullName, aDir, aName, aNamePt, aNameOri, aModeOri, aNameOut, aNameAuto, aPrefix2Add, aForceGray, aZMoy, aZInc,aInputSec);

    if (!MMVisualMode)
    {
        if (!checkNamePt( QString (aNamePt.c_str()))) return -1;

        QStringList filenames = getFilenames(aDir, aName);

        int aNbW = aNbFen.x * aNbFen.y;
        if (filenames.size() < aNbW)
        {
             aNbW = filenames.size();

             cVirtualInterface::ComputeNbFen(aNbFen, aNbW);
        }

        updateSettings(settings, aSzWin,aNbFen, aForceGray);

        settings.beginGroup("Misc");
        settings.setValue("defPtName", QString(aNameAuto.c_str()));
        settings.endGroup();

        QStringList input;
        input   << QString(MMDir().c_str()) + QString("bin/SaisiePts")
                << QString(MMDir().c_str()) + QString("include/XML_MicMac/SaisieInitiale.xml")
                << QString("DirectoryChantier=") + QString(aDir.c_str())
                << QString("+Image=") +  QString(aName.c_str())
                << QString("+Ori=") + QString(aNameOri.c_str())
                << QString("+NamePt=") + QString(aNamePt.c_str())
                << QString("+NameAuto=") + QString(aNameAuto.c_str())
                << QString("+Sauv=") + QString(aNameOut.c_str())
                << QString("+SzWx=") + QString::number(aSzWin.x)
                << QString("+SzWy=") + QString::number(aSzWin.y)
                << QString("+NbFx=") + QString::number(aNbFen.x)
                << QString("+NbFy=") + QString::number(aNbFen.y);

        if (aModeOri == "GRID")
        {
            input << QString("+ModeOriIm=eGeomImageGrille")
                  << QString("+Conik=false")
                  << QString("+ZIncIsProp=false")
                    //<< QString(+PostFixOri=GRIBin")
                  << QString("+Px1Inc=") + QString::number(aZInc)
                  << QString("+Px1Moy=") + QString::number(aZMoy);

            //<< QString("+Geom=eGeomMNTFaisceauIm1ZTerrain_Px1D");
        }

        if (EAMIsInit(&aForceGray))
           input << QString("+ForceGray=") + QString(((string)(ToString(aForceGray))).c_str());

        if (EAMIsInit(&aPrefix2Add))
           input << QString("+Pref2Add=") + QString(aPrefix2Add.c_str());


        char **output;

        // Copy input to output
        output = new char*[input.size() + 1];
        for (int i = 0; i < input.size(); i++) {
            output[i] = new char[strlen(input.at(i).toStdString().c_str())+1];
            memcpy(output[i], input.at(i).toStdString().c_str(), strlen(input.at(i).toStdString().c_str())+1);
        }
        output[input.size()] = ((char*)NULL);


        cResultSubstAndStdGetFile<cParamSaisiePts> aP2(
                input.size()-2,output+2,
                output[1],
                StdGetFileXMLSpec("ParamSaisiePts.xml"),
                "ParamSaisiePts",
                "ParamSaisiePts",
                "DirectoryChantier",
                "FileChantierNameDescripteur" );

        cAppli_SaisiePts   anAppli (aP2,false);

        SaisieQtWindow w(POINT2D_INIT);

        new cQT_Interface(anAppli,&w);

        w.show();

        w.addFiles(filenames, false);

        return app.exec();
    }
    else
        return EXIT_SUCCESS;
}
示例#20
0
cGenerateMail::cGenerateMail(int argc,char ** argv) :
    mDir (MMDir() + "Documentation/Mailing/"),
    mICNM (cInterfChantierNameManipulateur::BasicAlloc(mDir)),
    mNameFile (mICNM->Get(".*\\.dcd")),
    mOnlyFile ("")
{
    mNbByF=298;
    ElInitArgMain
    (
        argc,argv,
        LArgMain() ,
        LArgMain() << EAM(mNbByF,"NbByF",true)
                   << EAM(mOnlyFile,"SingleFile",true,"If specified, all but this one will considered as black-list files")
                   << EAM(mDests,"Dests",true,"Selected dest (for ex [fr] if only french)")
    );	


    for (int aKN=0 ; aKN<int(mNameFile->size()) ; aKN++)
    {
        std::string aName = mDir + (*mNameFile)[aKN];
        std::cout << "========================= begin Name File :: " << aName << "\n";
        ParseFile(aName,false);
    }

    cCmpOEM TheCmp;
    std::sort(mVE.begin(),mVE.end(),TheCmp);

    FILE * aFP =0;
    int aCptF =0; 
    int aCptInF =0; 




    // std::string aSep=";";
    std::string aSep="";

    for (int aK=0 ; aK<int(mVE.size()) ; aK++)
    {
         if (aFP==0)
         {
              aFP = FopenNN(mDir+"MailList_"+ToString(aCptF)+".txt","w","MailList::open");
              fprintf(aFP,"[email protected]%s\n",aSep.c_str());

         }
         if (! mVE[aK]->mBlackList)
         {
             fprintf(aFP,"%s",mVE[aK]->mAdr.c_str());
             if ((aCptInF==mNbByF) || ((aK+1)==int(mVE.size())))
             {
                  fprintf(aFP,"\n");
                  fprintf(aFP,"[email protected]\n");
                  fclose(aFP);
                  aFP =0;
                  aCptF++;
                  aCptInF=0;
             }
             else
             {
                  aCptInF++;
                  fprintf(aFP,"%s\n",aSep.c_str());
             }
         }
    }
}