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; }
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; }
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"; }
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; }
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))); }
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; }
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 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; }
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() ); } }
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; }
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 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; }
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 }
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; }
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()); } } } }