int AperoProg_main(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv); std::string aFullDir= ""; std::string AeroIn= ""; std::string AeroOut=""; /*double aSigmaTieP = 1; double aFactResElimTieP = 5; double Viscos = 1.0; bool ExpTxt = false;*/ ElInitArgMain ( argc,argv, LArgMain() << EAMC(aFullDir,"Full Directory (Dir+Pattern)", eSAM_IsPatFile) << EAMC(AeroIn,"Input Orientation", eSAM_IsExistDirOri) << EAMC(AeroOut,"Output Orientation", eSAM_IsOutputDirOri), LArgMain() ); if (!MMVisualMode) { std::string aDir,aPat; #if (ELISE_windows) replace( aFullDir.begin(), aFullDir.end(), '\\', '/' ); #endif SplitDirAndFile(aDir,aPat,aFullDir); StdCorrecNameOrient(AeroIn,aDir); } return EXIT_SUCCESS; }
int SaisiePts_main2(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv); // cAppliApero * anAppli = cAppliMICMAC::Alloc(argc,argv,eAllocAM_STD); //if (0) delete anAppli; ELISE_ASSERT(argc>=2,"Not enough arg"); cElXMLTree aTree(argv[1]); cResultSubstAndStdGetFile<cParamSaisiePts> aP2 ( argc-2,argv+2, //0,0, argv[1], StdGetFileXMLSpec("ParamSaisiePts.xml"), "ParamSaisiePts", "ParamSaisiePts", "DirectoryChantier", "FileChantierNameDescripteur" ); //cAppli_SaisiePts anAppli (aP2); //((cX11_Interface*)anAppli.Interface())->BoucleInput(); //SaisiePts_Banniere(); return 0; }
int TestMTD_main(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv,1); std::string aNameIm; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aNameIm,"Image name", eSAM_IsPatFile), LArgMain() ); if (MMVisualMode) return EXIT_SUCCESS; std::string aDir,aPat; SplitDirAndFile(aDir,aPat,aNameIm); cInterfChantierNameManipulateur::BasicAlloc(aDir); cMetaDataPhoto aMTD = cMetaDataPhoto::CreateExiv2(aNameIm); std::cout << "FocMm " << aMTD.FocMm(true) << "\n"; std::cout << "Foc35 " << aMTD.Foc35(true) << "\n"; std::cout << "Cam [" << aMTD.Cam(true) << "]\n"; return 1; }
int XeresMergeTieP_Main(int argc,char** argv) { MMD_InitArgcArgv(argc,argv); std::vector<std::string> aVSeq; std::string aDir="./"; std::string aPostMerge; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aVSeq, "Sequence"), LArgMain() << EAM(aDir,"Dir",true,"Folder of data, Def=./") << EAM(aPostMerge,"Postfix of merged folder") ); if (! EAMIsInit(&aPostMerge)) { aPostMerge = "Merge-" + aVSeq[0]; } std::vector<cAppliXeres *> aVAp; for (int aK=0 ; aK<int(aVSeq.size()) ; aK++) { aVAp.push_back(new cAppliXeres (aDir,aVSeq[aK])); } cAppliXeres::FusionneHom(aVAp,aPostMerge); return EXIT_SUCCESS; }
int genmail_main(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv); cGenerateMail anAppli(argc,argv); return 1; }
int Compens_main(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv); cEtalonnage::DoCompensation(argc,argv); return 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; }
int CPP_Gene_Martini_main(int argc,char ** argv,bool Quick) { MMD_InitArgcArgv(argc,argv); cAppli_Martini anAppli(argc,argv,Quick); if (MMVisualMode) return EXIT_SUCCESS; anAppli.DoAll(); anAppli.Banniere(Quick); return EXIT_SUCCESS; }
int MPI2Mnt_main(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv); cAppli_MPI2Mnt anAppli(argc,argv); if (!MMVisualMode) anAppli.DoAll(); return EXIT_SUCCESS; }
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; }
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; }
int ChgSysCo_main(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv); std::string aFullDir= ""; std::string AeroIn= ""; std::string aStrChSys=""; std::string AeroOut=""; bool ForceRot = false; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aFullDir,"Full Directory (Dir+Pattern)", eSAM_IsPatFile) << EAMC(AeroIn,"Input Orientation", eSAM_IsExistDirOri) << EAMC(aStrChSys,"Change coordinate file", eSAM_IsExistFile) << EAMC(AeroOut,"Output Orientation", eSAM_IsOutputDirOri), LArgMain() << EAM(ForceRot,"FR",true,"Force orientation matrix to be pure rotation (Def = true)", eSAM_IsBool) ); if (!MMVisualMode) { std::string aDir,aPat; #if (ELISE_windows) replace( aFullDir.begin(), aFullDir.end(), '\\', '/' ); #endif SplitDirAndFile(aDir,aPat,aFullDir); StdCorrecNameOrient(AeroIn,aDir); std::cout << "DPPPP= " << aDir << " " << aPat << "\n"; std::string aCom = MM3dBinFile( "Apero" ) + XML_MM_File("Apero-ChCo.xml") + std::string(" DirectoryChantier=") + aDir + " " + std::string(" +SetIm=") + aPat + " " + std::string(" +AeroIn=-") + AeroIn + " " + std::string(" +AeroOut=-") + AeroOut + " " + std::string(" +ChC=") + aStrChSys + " " + std::string(" +ChCFR=") + ToString(ForceRot) ; std::cout << "COM = " << aCom << "\n"; int aRes = system_call(aCom.c_str()); return aRes; } else return EXIT_SUCCESS; }
int MMAllAuto_main(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv); std::string aDir,aPat,aFullDir; std::string AeroIn; int aZoomF = 2; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aFullDir,"Dir + Pattern", eSAM_IsPatFile) << EAMC(AeroIn,"Orientation", eSAM_IsExistDirOri), LArgMain() << EAM(aZoomF,"ZoomF",true,"Zoom Final, def=2",eSAM_IsPowerOf2) ); #if (ELISE_windows) replace( aFullDir.begin(), aFullDir.end(), '\\', '/' ); #endif SplitDirAndFile(aDir,aPat,aFullDir); StdCorrecNameOrient(AeroIn,aDir); cInterfChantierNameManipulateur * aICNM = cInterfChantierNameManipulateur::BasicAlloc(aDir); // Genere les pyramides pour que le paral ne s'ecrase pas les 1 les autres const cInterfChantierNameManipulateur::tSet * aSetIm = aICNM->Get(aPat); for (int aKIm=0 ; aKIm<int(aSetIm->size()) ; aKIm++) { std::string aCom = MM3dBinFile("MICMAC") + XML_MM_File("MM-AllAuto.xml") + std::string(" WorkDir=") +aDir + std::string(" ") + std::string(" +Im1=") + QUOTE((*aSetIm)[aKIm]) + std::string(" ") + std::string(" +Ori=-") + AeroIn + std::string(" +ZoomF=") + ToString(aZoomF) ; system_call(aCom.c_str()); } // int aRes = system_call(aCom.c_str()); return 0; }
int XeresCalibMain_main(int argc,char** argv) { MMD_InitArgcArgv(argc,argv); std::string aSeq,aDir,OutCal="Calib"; int aSz=1500; ElInitArgMain ( argc,argv, LArgMain() // << EAMC(aSeq, "Sequence") << EAMC(aDir, "Directory"), LArgMain() << EAM(aSeq,"Seq",true,"Folder of data, Def=./") << EAM(aSz,"Sz",true,"Sz of TieP, Def=1500") << EAM(OutCal,"Out",true,"") ); // std::string aCdDir = "cd " + aDir + "/"; // System(aCdDir); if (!EAMIsInit(&aSeq) ) aSeq = aDir; cElemAppliSetFile anEASF(aDir+"/.*jpg"); const std::vector<std::string> * aVS = anEASF.SetIm(); int aNbIm = aVS->size(); for (int aK=0 ; aK<aNbIm ; aK++) { const std::string & aName = (*aVS)[aK]; ELISE_fp::MvFile(aDir+"/"+aName,aDir+"/"+aSeq+"_Calib" +ToString(aK) + ".jpg"); std::cout << "NAME = " << aName << "\n"; } std::string aStrMMD= "MicMac-LocalChantierDescripteur.xml"; ELISE_fp::CpFile(aStrMMD,aDir+"/"+aStrMMD); std::string aComTiep = MM3dBinFile_quotes("Tapioca") + " All " + aDir + "/.*jpg " + ToString(aSz); System(aComTiep); std::string aComOri = MM3dBinFile_quotes("Tapas ") + " FraserBasic " + aDir + "/.*jpg " + " Out=" + OutCal + " RankInitPP=0 RankInitF=1 RefineAll=0"; System(aComOri); return EXIT_SUCCESS; }
int XeresTest_Main(int argc,char** argv) { MMD_InitArgcArgv(argc,argv); std::string aSeq; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aSeq, "Sequence"), LArgMain() // << EAM(mCalib,"OriCalib",true,"Calibration folder if any") ); cAppliXeres anAppli("./",aSeq); anAppli.TestInteractNeigh(); return EXIT_SUCCESS; }
int PastDevlop_main(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv); std::string aFullName; int aSz1 = -1; int aSz2 = -1; bool aCoul8B = false; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aFullName, "Full Directory (Dir+Pattern)", eSAM_IsPatFile), LArgMain() << EAM(aSz1,"Sz1",true) << EAM(aSz2,"Sz2",true) << EAM(aCoul8B,"Coul8B",true) ); if (!MMVisualMode) { cInterfChantierNameManipulateur::BasicAlloc(DirOfFile(aFullName)); Tiff_Im::StdConvGen(aFullName,1,true,true); Tiff_Im::StdConvGen(aFullName,1,false,true); if (aCoul8B) { Tiff_Im::StdConvGen(aFullName,3,false,true); } cTplValGesInit<std::string> aTName; cInterfChantierNameManipulateur::StdAlloc(argc,argv,DirOfFile(aFullName),aTName); DoSimplePastisSsResol(aFullName,-1); if (aSz1 >0) DoSimplePastisSsResol(aFullName,aSz1); if (aSz2 >0) DoSimplePastisSsResol(aFullName,aSz2); } return EXIT_SUCCESS; }
int TestSet_main(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv,2); std::string aDir,aPat,aFullDir; int aNbMax=10; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aFullDir,"Full Directory (Dir+Pattern)", eSAM_IsPatFile), LArgMain() << EAM(aNbMax,"Nb",true,"Nb Max printed (def=10)") ); if (MMVisualMode) return EXIT_SUCCESS; #if (ELISE_windows) replace( aFullDir.begin(), aFullDir.end(), '\\', '/' ); #endif SplitDirAndFile(aDir,aPat,aFullDir); cInterfChantierNameManipulateur * aICNM = cInterfChantierNameManipulateur::BasicAlloc(aDir); const cInterfChantierNameManipulateur::tSet * mSetIm = aICNM->Get(aPat); int aNb = ElMin(aNbMax,int(mSetIm->size())); for (int aK=0 ; aK< aNb ; aK++) { std::string aName = (*mSetIm)[aK]; printf("%3d ",aK); std::cout << aName ; std::cout << "\n"; } if (1) { // std::list<std::string> aL = RegexListFileMatch(aDir,aPat,1,false); std::cout << "NB BY RFLM " << mSetIm->size() << "\n"; } return EXIT_SUCCESS; }
int PreGenerateDuTriplet(int argc,char ** argv,const std::string & aComIm) { MMD_InitArgcArgv(argc,argv); std::string aFullName,anOriCalib; bool aQuick; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aFullName,"Name of Image"), LArgMain() << EAM(anOriCalib,"OriCalib",true,"Calibration directory ") << EAM(aQuick,"Quick",true,"Quick version") ); cElemAppliSetFile anEASF(aFullName); if (!EAMIsInit(&anOriCalib)) { MakeXmlXifInfo(aFullName,anEASF.mICNM); } cNewO_NameManager aNM(aQuick,anEASF.mDir,anOriCalib,"dat"); aNM.Dir3P(true); const cInterfChantierNameManipulateur::tSet * aSetIm = anEASF.SetIm(); std::list<std::string> aLCom; for (int aKIm=0 ; aKIm<int(aSetIm->size()) ; aKIm++) { std::string aCom = MM3dBinFile_quotes( "TestLib ") + aComIm + " " + anEASF.mDir+(*aSetIm)[aKIm] ; if (EAMIsInit(&anOriCalib)) aCom = aCom + " OriCalib=" + anOriCalib; aCom += " Quick=" +ToString(aQuick); aLCom.push_back(aCom); //std::cout << aCom << "\n"; } cEl_GPAO::DoComInParal(aLCom); return EXIT_SUCCESS; }
int MICMAC_main(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv); Tiff_Im::SetDefTileFile(10000); MicMacRequiresBinaireAux(); AddEntryStringifie ( "include" ELISE_STR_DIR "XML_GEN" ELISE_STR_DIR "ParamMICMAC.xml", theNameVar_ParamMICMAC, true ); cAppliMICMAC * anAppli = cAppliMICMAC::Alloc(argc,argv,eAllocAM_STD); if (anAppli==0) return 0; if ((! anAppli->CalledByProcess().Val()) && (anAppli->SectionBatch().IsInit())) { for ( std::list<std::string>::iterator itS=anAppli->NextMicMacFile2Exec().begin(); itS != anAppli->NextMicMacFile2Exec().end(); itS++ ) { std::string aCom = current_program_fullname() + " " + current_program_subcommand() + " " + *itS; for (int aK=2; aK<argc ; aK++) aCom = aCom + std::string(" ") +argv[aK] ; std::list<std::string> aLProc; aLProc.push_back(aCom); anAppli->ExeProcessParallelisable(false,aLProc); } } if (0) delete anAppli; return 0; }
int XeresHomMatch_main(int argc,char** argv) { MMD_InitArgcArgv(argc,argv); std::string aDir="./"; std::string aSeq; std::string anOri; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aSeq, "Sequence") << EAMC(anOri,"Orientation"), LArgMain() << EAM(aDir,"Dir",true,"Folder of data, Def=./") ); cAppliXeres anAppli(aDir,aSeq); StdCorrecNameOrient(anOri,aDir); anAppli.CalculHomMatch(anOri); return EXIT_SUCCESS; }
int XifGps2Xml_main(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv,2); std::string aFullName; std::string anOri; bool DoRTL = true; std::string aNameRTL = "RTLFromExif.xml"; std::string aNameSys = aNameRTL; double aDefZ=0; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aFullName,"Full Name", eSAM_IsPatFile) << EAMC(anOri,"Orientation", eSAM_IsExistDirOri), LArgMain() << EAM(DoRTL,"DoRTL",true,"Do Local Tangent RTL (def=true)") << EAM(aNameRTL,"RTL", true,"Name RTL", eSAM_IsExistFileRP) << EAM(aNameSys,"SysCo",true, "System of coordinates, by default RTL created (RTLFromExif.xml)", eSAM_IsExistFileRP) << EAM(aDefZ,"DefZ","Default value for altitude (def 0)") ); if (MMVisualMode) return EXIT_SUCCESS; cAppli_XifGps2Xml anAppli(aFullName,aDefZ); if (DoRTL) { ELISE_ASSERT(anAppli.mNbOk!=0,"No GPS data to compute RTL reference system"); MakeFileXML(anAppli.mSysRTL,anAppli.mDir+aNameRTL); } cSysCoord * aSysCo = cSysCoord::FromFile(anAppli.mDir + aNameSys); anAppli.ExportSys(aSysCo,anOri); return 0; }
int XeresTieP_Main(int argc,char** argv) { MMD_InitArgcArgv(argc,argv); std::string aSeq; int aSz,aNbHom=2; std::string aDir="./"; std::string aNameCpleSup=""; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aSeq, "Sequence") << EAMC(aSz,"Sz Tie points"), LArgMain() << EAM(aDir,"Dir",true,"Folder of data, Def=./") << EAM(aNbHom,"DV",true,"Delta Vois, Def=2") << EAM(aNameCpleSup,"CpleSup",true,"File for additional cple") ); cAppliXeres anAppli(aDir,aSeq); anAppli.CalculTiePoint(aSz,aNbHom,aNameCpleSup); return EXIT_SUCCESS; }
int Apero2PMVS_main(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv); //Reading the arguments string aFullPattern,aOri; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aFullPattern,"Images' name pattern", eSAM_IsPatFile) << EAMC(aOri,"Orientation name", eSAM_IsExistDirOri), LArgMain() ); if (MMVisualMode) return EXIT_SUCCESS; string aPattern, aDir; SplitDirAndFile(aDir, aPattern, aFullPattern); StdCorrecNameOrient(aOri, aDir); Apero2PMVS(aFullPattern,aOri); return EXIT_SUCCESS; }
int XeresReNameInit_main(int argc,char** argv) { MMD_InitArgcArgv(argc,argv); std::string aDir="./"; std::string aSeq; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aSeq, "Sequence"), LArgMain() << EAM(aDir,"Dir",true,"Folder of data, Def=./") ); std::string aCom = MM3dBinFile_quotes( "MyRename " ) + "\"([A-Z][0-9]{1,2})_.*\" \"\\$1_" + aSeq + ".jpg\" Exe=1" ; // std::cout << aCom << "\n"; System(aCom); return EXIT_SUCCESS; }
int HomFilterMasq_main(int argc,char ** argv) { // MemoArg(argc,argv); MMD_InitArgcArgv(argc,argv); std::string aDir,aPat,aFullDir; bool ExpTxt=false; std::string PostPlan="_Masq"; std::string KeyCalcMasq; std::string KeyEquivNoMasq; std::string MasqGlob; double aResol=10; bool AcceptNoMask; std::string aPostIn= ""; std::string aPostOut= "MasqFiltered"; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aFullDir,"Full name (Dir+Pat)", eSAM_IsPatFile), LArgMain() << EAM(PostPlan,"PostPlan",true,"Post to plan, Def : toto ->toto_Masq.tif like with SaisieMasq") << EAM(MasqGlob,"GlobalMasq",true,"Global Masq to add to all image") << EAM(KeyCalcMasq,"KeyCalculMasq",true,"For tuning masq per image") << EAM(KeyEquivNoMasq,"KeyEquivNoMasq",true,"When given if KENM(i1)==KENM(i2), don't masq") << EAM(aResol,"Resol",true,"Sub Resolution for masq storing, Def=10") << EAM(AcceptNoMask,"ANM",true,"Accept no mask, def = true if MasqGlob and false else") << EAM(ExpTxt,"ExpTxt",true,"Ascii format for in and out, def=false") << EAM(aPostIn,"PostIn",true,"Post for Input dir Hom, Def=") << EAM(aPostOut,"PostOut",true,"Post for Output dir Hom, Def=MasqFiltered") ); #if (ELISE_windows) replace( aFullDir.begin(), aFullDir.end(), '\\', '/' ); #endif SplitDirAndFile(aDir,aPat,aFullDir); if (EAMIsInit(&PostPlan)) { CorrecNameMasq(aDir,aPat,PostPlan); } if (!EAMIsInit(&AcceptNoMask)) AcceptNoMask = EAMIsInit(&MasqGlob); cInterfChantierNameManipulateur * anICNM = cInterfChantierNameManipulateur::BasicAlloc(aDir); Im2D_Bits<1> aImMasqGlob(1,1); if (EAMIsInit(&MasqGlob)) aImMasqGlob = GetMasqSubResol(aDir+MasqGlob,aResol); const std::vector<std::string> * aVN = anICNM->Get(aPat); std::vector<Im2D_Bits<1> > aVMasq; for (int aKN = 0 ; aKN<int(aVN->size()) ; aKN++) { std::string aNameIm = (*aVN)[aKN]; Tiff_Im aTF = Tiff_Im::StdConvGen(aNameIm,1,false); Pt2di aSzG = aTF.sz(); Pt2di aSzR (round_ni(Pt2dr(aSzG)/aResol)); Im2D_Bits<1> aImMasq(aSzR.x,aSzR.y,1); std::string aNameMasq = StdPrefix(aNameIm)+PostPlan + ".tif"; if (EAMIsInit(&KeyCalcMasq)) { aNameMasq = anICNM->Assoc1To1(KeyCalcMasq,aNameIm,true); } if (ELISE_fp::exist_file(aNameMasq)) { Im2D_Bits<1> aImMasqLoc = GetMasqSubResol(aDir+aNameMasq,aResol); ELISE_COPY(aImMasq.all_pts(),aImMasq.in() && aImMasqLoc.in(0),aImMasq.out()); } else { if (!AcceptNoMask) { std::cout << "For Im " << aNameIm << " file " << aNameMasq << " does not exist\n"; ELISE_ASSERT(false,"Masq not found"); } } if (EAMIsInit(&MasqGlob)) { ELISE_COPY(aImMasq.all_pts(),aImMasq.in() && aImMasqGlob.in(0),aImMasq.out()); } aVMasq.push_back(aImMasq); // Tiff_Im::CreateFromIm(aImMasq,"SousRes"+aNameMasq); } std::string anExt = ExpTxt ? "txt" : "dat"; std::string aKHIn = std::string("NKS-Assoc-CplIm2Hom@") + std::string(aPostIn) + std::string("@") + std::string(anExt); std::string aKHOut = std::string("NKS-Assoc-CplIm2Hom@") + std::string(aPostOut) + std::string("@") + std::string(anExt); for (int aKN1 = 0 ; aKN1<int(aVN->size()) ; aKN1++) { for (int aKN2 = 0 ; aKN2<int(aVN->size()) ; aKN2++) { std::string aNameIm1 = (*aVN)[aKN1]; std::string aNameIm2 = (*aVN)[aKN2]; std::string aNameIn = aDir + anICNM->Assoc1To2(aKHIn,aNameIm1,aNameIm2,true); if (ELISE_fp::exist_file(aNameIn)) { bool UseMasq = true; if (EAMIsInit(&KeyEquivNoMasq)) { UseMasq = (anICNM->Assoc1To1(KeyEquivNoMasq,aNameIm1,true) != anICNM->Assoc1To1(KeyEquivNoMasq,aNameIm2,true) ); } TIm2DBits<1> aMasq1 ( aVMasq[aKN1]); TIm2DBits<1> aMasq2 ( aVMasq[aKN2]); ElPackHomologue aPackIn = ElPackHomologue::FromFile(aNameIn); ElPackHomologue aPackOut; for (ElPackHomologue::const_iterator itP=aPackIn.begin(); itP!=aPackIn.end() ; itP++) { Pt2dr aP1 = itP->P1(); Pt2dr aP2 = itP->P2(); Pt2di aQ1 = round_ni(aP1/aResol); Pt2di aQ2 = round_ni(aP2/aResol); if ((aMasq1.get(aQ1,0) && aMasq2.get(aQ2,0)) || (! UseMasq)) { ElCplePtsHomologues aCple(aP1,aP2); aPackOut.Cple_Add(aCple); } } std::string aNameOut = aDir + anICNM->Assoc1To2(aKHOut,aNameIm1,aNameIm2,true); aPackOut.StdPutInFile(aNameOut); std::cout << "IN " << aNameIn << " " << aNameOut << " UseM " << UseMasq << "\n"; } } } // std::vector<cImFMasq *> mVIm; return 0; }
int HomFusionPDVUnik_main(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv); std::string aDir,aPat,aFullDir; std::string aPostIn= ""; std::string aPostOut= "MasqFusion"; bool ExpTxt=false; std::string aDir2; std::vector<std::string > aDirN; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aFullDir,"Full name (Dir+Pat)", eSAM_IsPatFile) << EAMC(aDir2,"Dir of external point", eSAM_IsPatFile), LArgMain() << EAM(aPostIn,"PostIn",true,"Post for Input dir Hom, Def=") << EAM(aPostOut,"PostOut",true,"Post for Output dir Hom, Def=MasqFusion") << EAM(ExpTxt,"ExpTxt",true,"Ascii format for in and out, def=false") << EAM(aDirN,"DirN",true,"Supplementary dirs 2 merge") ); #if (ELISE_windows) replace( aFullDir.begin(), aFullDir.end(), '\\', '/' ); #endif cElemAppliSetFile anEASF(aFullDir); cInterfChantierNameManipulateur * anICNM = anEASF.mICNM; const std::vector<std::string> * aVN = anEASF.SetIm(); std::string anExt = ExpTxt ? "txt" : "dat"; std::string aKHIn = std::string("NKS-Assoc-CplIm2Hom@") + std::string(aPostIn) + std::string("@") + std::string(anExt); std::string aKHOut = std::string("NKS-Assoc-CplIm2Hom@") + std::string(aPostOut) + std::string("@") + std::string(anExt); aDirN.push_back(aDir); aDirN.push_back(aDir2); for (int aKN1 = 0 ; aKN1<int(aVN->size()) ; aKN1++) { for (int aKN2 = 0 ; aKN2<int(aVN->size()) ; aKN2++) { std::string aNameIm1 = (*aVN)[aKN1]; std::string aNameIm2 = (*aVN)[aKN2]; std::string aNameLocIn = aDir + anICNM->Assoc1To2(aKHIn,aNameIm1,aNameIm2,true); ElPackHomologue aPackOut; int aNbH=0; for (int aKP=0 ; aKP<int(aDirN.size()) ; aKP++) { std::string aNameIn= aDirN[aKP] + aNameLocIn; if (ELISE_fp::exist_file(aNameIn)) { ElPackHomologue aPackIn = ElPackHomologue::FromFile(aNameIn); aNbH++; for (ElPackHomologue::const_iterator itP=aPackIn.begin() ; itP!=aPackIn.end() ; itP++) { aPackOut.Cple_Add(itP->ToCple()); } } } if (aPackOut.size() !=0) { std::string aNameOut = aDir + anICNM->Assoc1To2(aKHOut,aNameIm1,aNameIm2,true); aPackOut.StdPutInFile(aNameOut); if (0) std::cout << "aNbH " << aNbH << "\n"; } } } return EXIT_SUCCESS; }
int HomFilterMasq_main(int argc,char ** argv) { // MemoArg(argc,argv); MMD_InitArgcArgv(argc,argv); std::string aDir,aPat,aFullDir; bool ExpTxt=false; std::string PostPlan="_Masq"; std::string KeyCalcMasq; std::string KeyEquivNoMasq; std::string MasqGlob; double aResol=10; bool AcceptNoMask; std::string aPostIn= ""; std::string aPostOut= "MasqFiltered"; std::string aOriMasq3D,aNameMasq3D; cMasqBin3D * aMasq3D = 0; Pt2dr aSelecTer; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aFullDir,"Full name (Dir+Pat)", eSAM_IsPatFile), LArgMain() << EAM(PostPlan,"PostPlan",true,"Post to plan, Def : toto ->toto_Masq.tif like with SaisieMasq") << EAM(MasqGlob,"GlobalMasq",true,"Global Masq to add to all image") << EAM(KeyCalcMasq,"KeyCalculMasq",true,"For tuning masq per image") << EAM(KeyEquivNoMasq,"KeyEquivNoMasq",true,"When given if KENM(i1)==KENM(i2), don't masq") << EAM(aResol,"Resol",true,"Sub Resolution for masq storing, Def=10") << EAM(AcceptNoMask,"ANM",true,"Accept no mask, def = true if MasqGlob and false else") << EAM(ExpTxt,"ExpTxt",true,"Ascii format for in and out, def=false") << EAM(aPostIn,"PostIn",true,"Post for Input dir Hom, Def=") << EAM(aPostOut,"PostOut",true,"Post for Output dir Hom, Def=MasqFiltered") << EAM(aOriMasq3D,"OriMasq3D",true,"Orientation for Masq 3D") << EAM(aNameMasq3D,"Masq3D",true,"File of Masq3D, Def=AperiCloud_${OriMasq3D}.ply") << EAM(aSelecTer,"SelecTer",true,"[Per,Prop] Period of tiling on ground selection, Prop=proporion of selected") ); bool aHasOri3D = EAMIsInit(&aOriMasq3D); bool HasTerSelec = EAMIsInit(&aSelecTer); #if (ELISE_windows) replace( aFullDir.begin(), aFullDir.end(), '\\', '/' ); #endif SplitDirAndFile(aDir,aPat,aFullDir); if (EAMIsInit(&PostPlan)) { CorrecNameMasq(aDir,aPat,PostPlan); } if (!EAMIsInit(&AcceptNoMask)) AcceptNoMask = EAMIsInit(&MasqGlob) || aHasOri3D; cInterfChantierNameManipulateur * anICNM = cInterfChantierNameManipulateur::BasicAlloc(aDir); std::string aKeyOri; if (aHasOri3D) { anICNM->CorrecNameOrient(aOriMasq3D); if (! EAMIsInit(&aNameMasq3D)) { aNameMasq3D = aDir + "AperiCloud_" + aOriMasq3D + "_polyg3d.xml"; } if (ELISE_fp::exist_file(aDir+aNameMasq3D)) { aMasq3D = cMasqBin3D::FromSaisieMasq3d(aDir+aNameMasq3D); } else { ELISE_ASSERT(EAMIsInit(&aSelecTer),"Unused OriMasq3D"); } aKeyOri = "NKS-Assoc-Im2Orient@" + aOriMasq3D; } Im2D_Bits<1> aImMasqGlob(1,1); if (EAMIsInit(&MasqGlob)) aImMasqGlob = GetMasqSubResol(aDir+MasqGlob,aResol); const std::vector<std::string> * aVN = anICNM->Get(aPat); std::vector<Im2D_Bits<1> > aVMasq; std::vector<CamStenope *> aVCam; double aResolMoy = 0; for (int aKN = 0 ; aKN<int(aVN->size()) ; aKN++) { std::string aNameIm = (*aVN)[aKN]; Tiff_Im aTF = Tiff_Im::StdConvGen(aNameIm,1,false); Pt2di aSzG = aTF.sz(); Pt2di aSzR (round_ni(Pt2dr(aSzG)/aResol)); Im2D_Bits<1> aImMasq(aSzR.x,aSzR.y,1); std::string aNameMasq = StdPrefix(aNameIm)+PostPlan + ".tif"; if (EAMIsInit(&KeyCalcMasq)) { aNameMasq = anICNM->Assoc1To1(KeyCalcMasq,aNameIm,true); } if (ELISE_fp::exist_file(aNameMasq)) { Im2D_Bits<1> aImMasqLoc = GetMasqSubResol(aDir+aNameMasq,aResol); ELISE_COPY(aImMasq.all_pts(),aImMasq.in() && aImMasqLoc.in(0),aImMasq.out()); } else { if (!AcceptNoMask) { std::cout << "For Im " << aNameIm << " file " << aNameMasq << " does not exist\n"; ELISE_ASSERT(false,"Masq not found"); } } if (EAMIsInit(&MasqGlob)) { ELISE_COPY(aImMasq.all_pts(),aImMasq.in() && aImMasqGlob.in(0),aImMasq.out()); } aVMasq.push_back(aImMasq); // Tiff_Im::CreateFromIm(aImMasq,"SousRes"+aNameMasq); if (aHasOri3D) { aVCam.push_back(anICNM->StdCamOfNames(aNameIm,aOriMasq3D)); aResolMoy += aVCam.back()->GlobResol(); } } if (aHasOri3D) aResolMoy /= aVCam.size(); std::string anExt = ExpTxt ? "txt" : "dat"; std::string aKHIn = std::string("NKS-Assoc-CplIm2Hom@") + std::string(aPostIn) + std::string("@") + std::string(anExt); std::string aKHOut = std::string("NKS-Assoc-CplIm2Hom@") + std::string(aPostOut) + std::string("@") + std::string(anExt); double aPeriodTer=0,aSeuilDistTer=0; if (HasTerSelec) { aPeriodTer = aSelecTer.x * aResolMoy; aSeuilDistTer = aPeriodTer * sqrt(aSelecTer.y); } double aNbInTer=0; double aNbTestTer=0; for (int aKN1 = 0 ; aKN1<int(aVN->size()) ; aKN1++) { for (int aKN2 = 0 ; aKN2<int(aVN->size()) ; aKN2++) { std::string aNameIm1 = (*aVN)[aKN1]; std::string aNameIm2 = (*aVN)[aKN2]; std::string aNameIn = aDir + anICNM->Assoc1To2(aKHIn,aNameIm1,aNameIm2,true); if (ELISE_fp::exist_file(aNameIn)) { bool UseMasq = true; if (EAMIsInit(&KeyEquivNoMasq)) { UseMasq = (anICNM->Assoc1To1(KeyEquivNoMasq,aNameIm1,true) != anICNM->Assoc1To1(KeyEquivNoMasq,aNameIm2,true) ); } TIm2DBits<1> aMasq1 ( aVMasq[aKN1]); TIm2DBits<1> aMasq2 ( aVMasq[aKN2]); ElPackHomologue aPackIn = ElPackHomologue::FromFile(aNameIn); ElPackHomologue aPackOut; for (ElPackHomologue::const_iterator itP=aPackIn.begin(); itP!=aPackIn.end() ; itP++) { Pt2dr aP1 = itP->P1(); Pt2dr aP2 = itP->P2(); Pt2di aQ1 = round_ni(aP1/aResol); Pt2di aQ2 = round_ni(aP2/aResol); bool Ok = ((aMasq1.get(aQ1,0) && aMasq2.get(aQ2,0)) || (! UseMasq)); if (Ok && aHasOri3D) { Pt3dr aPTer= aVCam[aKN1]->PseudoInter(aP1,*(aVCam[aKN2]),aP2); if (aMasq3D && (! aMasq3D->IsInMasq(aPTer))) Ok = false; if (Ok && HasTerSelec) { bool OkTer = (mod_real(aPTer.x,aPeriodTer) < aSeuilDistTer) && (mod_real(aPTer.y,aPeriodTer) < aSeuilDistTer); Ok = OkTer; aNbTestTer ++; aNbInTer += OkTer; } } if (Ok) { ElCplePtsHomologues aCple(aP1,aP2); aPackOut.Cple_Add(aCple); } } std::string aNameOut = aDir + anICNM->Assoc1To2(aKHOut,aNameIm1,aNameIm2,true); aPackOut.StdPutInFile(aNameOut); std::cout << "IN " << aNameIn << " " << aNameOut << " UseM " << UseMasq << "\n"; } } } // std::vector<cImFMasq *> mVIm; if (HasTerSelec) { std::cout << "A Posteriori Prop=" << aNbInTer / aNbTestTer << "\n"; } return EXIT_SUCCESS; }
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; }
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; }
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; } }