1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| #include "MCharImage.h"
#include "MDetecteur.h"
#include "MListePI.h"
//#include "MListeCouples.h"
#include "MUtils.h"
using namespace std;
using namespace local_vis_eric;
int main (int argc,char** argv)
{
MCheckCpu();
//MSetWithMmxSseUse(2); //0->pas de SIMD, 1->MMX et SSE (Pentium 3 et AMD), 2->SSE2 (Pentium 4)
if (argc==3)
{
//Ouverture des images
cout << "ouverture des images" << endl;
MCharImage Image1,Image2;
Image1.Load(argv[1]);
Image2.Load(argv[2]);
cout << "ouverture des images ok" << endl;
int x=Image1.x();
int y=Image2.y();
cout << " dim : " << x << " " << y << endl;
//Detection des points
// Attention : utiliser un detecteur diff�ent pour chaque image
// Les detecteurs doivent etre conserves pour l'appariement
MDetecteurHarris Detecteur1(x,y),Detecteur2(x,y);
MListePI ListePI1,ListePI2;
int res = Detecteur1.DetecteBaquets(Image1,ListePI1,8,8,20,500,true);
cout << "Npoints : " << res << endl; //Subpixel=true
Detecteur2.DetecteBaquets(Image2,ListePI2,8,8,20,500,true); //Subpixel=true
cout << ListePI1.getNbPoints() << " ; " << ListePI2.getNbPoints() << endl;
/*
for(int i = 0 ; i < ListePI1.getNbPoints() ; i ++)
cout << "[" << ListePI1.getX(i) << " " << ListePI1.getY(i) << "]";
*/
cout << endl;
/*
for(int i = 0 ; i < ListePI2.getNbPoints() ; i ++)
cout << "[" << ListePI2.getX(i) << " " << ListePI2.getY(i) << "]";
*/
//system("pause");
//Appariement
//60x40 : taille de la fenetre de recherche, 0.8 : score minimum pour valider l'appariement
//~ MListeCouples ListeCouples;
//~ ListeCouples.Apparie(ListePI1,Detecteur1,ListePI2,Detecteur2,120,80,0.8);
//~ ListeCouples.KeepBest();
//~ MCharImage im(512,384);
//~ ListeCouples.DrawSelected(im,1,1,255);
//~ im.Save_pgm("pouet.pgm");
//ListeCouples.Create(ListePI1,ListePI2,120,80,0.8);
//Affichage
//~ for (int i=0;i<ListeCouples.getNbCouples();i++)
//~ {
//~ float x1,y1,x2,y2;
//~ ListeCouples.GetCoords(i,x1,y1,x2,y2);
//~ cout << "("<<x1<<","<<y1<<")-("<<x2<<","<<y2<<")"<<endl;
//~ }
}
else cout << "Usage : exemple image1.pgm image2.pgm" << endl;
//system("pause");
return 0;
} |
Partager