int TD_Exemple_main(int argc,char ** argv) { std::string aNameCam,aNameAppuis; std::string toto; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aNameCam,"Name of camera") << EAMC(aNameAppuis,"Name of GCP"), LArgMain() << EAM(toto,"toto",true,"Do no stuff") ); //On créé un objet camera (aCam) et un objet liste de points d'appui (aSetGCP) cTD_Camera aCam(aNameCam); cTD_SetAppuis aSetGCP(aNameAppuis); //Pour chaque point d'appui, on calcul la distance entre la coordonnée image données par le fichier et la coordonnée image projetée à partir du point 3D et des infos de camera for (int aKP=0 ; aKP<int(aSetGCP.PTer().size()) ; aKP++) { Pt3dr aPTer = aSetGCP.PTer()[aKP];//Point 3D Pt2dr aPIm = aSetGCP.PIm()[aKP];//Point image Pt2dr aPProj = aCam.Ter2Image(aPTer);//Point projeté std::cout << "dist[" << aKP << "]= " << euclid (aPIm,aPProj) << "\n"; } //On créé 3 int correspondant à des identifiants de points d'appui int aK1,aK2,aK3; std::cout << "ENTER K1 K2 K3 \n"; cin >> aK1 >> aK2 >> aK3; //Avec ces 3 points, on calcule les positions et orientations possibles de la caméra std::vector<cTD_Camera> aSols = aCam.RelvtEspace ( aSetGCP.PTer()[aK1], aSetGCP.PIm()[aK1], aSetGCP.PTer()[aK2], aSetGCP.PIm()[aK2], aSetGCP.PTer()[aK3], aSetGCP.PIm()[aK3] ); //Pour chaque solution, on calcul la distance entre la coordonnée image données par le fichier et la coordonnée image projetée à partir du point 3D et des infos calculées for (int aKS=0 ; aKS<int(aSols.size()) ; aKS++) { for (int aKP=0 ; aKP<int(aSetGCP.PTer().size()) ; aKP++) { Pt3dr aPTer = aSetGCP.PTer()[aKP]; Pt2dr aPIm = aSetGCP.PIm()[aKP]; Pt2dr aPProj = aSols[aKS].Ter2Image(aPTer); std::cout << " dist " << euclid (aPIm,aPProj) << "\n"; } std::cout << "========================================\n"; } return 0; }
void GenCodeLaserImage(bool Normalize,bool Multi,INT aNb,INT aDegre) { tParamAFocal aNOPAF; cout << "GenCodeLaserImage\n"; CamStenopeIdeale aCam(true,1.0,Pt2dr(0,0),aNOPAF); cSetEqFormelles aSet; Im2D_REAL4 aI(1,1); cLIParam_Image * aP1 = aSet.NewLIParamImage(aI,1.0,aCam,cNameSpaceEqF::eRotFigee); cLIParam_Image * aP2 = aSet.NewLIParamImage(aI,1.0,aCam,cNameSpaceEqF::eRotFigee); cRotationFormelle * aRotPts = 0; if (aDegre >=0) aRotPts = aSet.NewRotationEvol(ElRotation3D(Pt3dr(0,0,0),0,0,0),aDegre); aSet.NewLIEqVueLaserIm(aRotPts,Multi,Normalize,aNb,*aP1,*aP2,true); }