/* * PoursuiteCible.cpp * * * Created by Olivier Strauss on 17/10/16. * Copyright 2016 LIRMM. All rights reserved. * */ #include "CImg.h" #include "string.h" #include "stdio.h" #include "TraitementImage.h" using namespace cimg_library; int main(int argc, char *argv[]) { int nombre_de_points, n, increment, m ; const unsigned char red[] = { 255,0,0 }, green[] = { 0,255,0 }, blue[] = { 0,0,255 }; char NomFichier[1024], *pt, *ptc, *fin ; char NomDeBase[1024], Suffixe[32], ok ; FILE *fichier ; CImg Image_lue ; CImgDisplay Image_disp, Detail_disp ; CImg ::iterator Valeur_image ; CImg ::iterator Valeur_detail ; CImg ::iterator pointeur ; // pointeur de recuperation des valeurs de niveau de gris de l'image CImg Detail ; // recuperation du motif en poursuite int carre_x[2], carre_y[2], nx, ny, dim ; int Nx, Ny ; double delta_x=0.0, delta_y=0.0, dx, dy ; int x, y ; double *Image, *Image_x, *Image_y, *Image_transformee, *pti, *ptm, *finm ; double *Valeur_motif, *Derivee_temporelle; int *Point_x, *Point_y ; if(argc<1) return 0 ; strcpy(NomFichier,argv[1]) ; printf("\nNom = %s\n\n",NomFichier); fin = strrchr(NomFichier,'.') ; strcpy(Suffixe,fin) ; printf("suffixe = %s\n\n",Suffixe); fin -- ; while( ((*fin)>='0') && ((*fin)<='9') && fin>NomFichier ) fin -- ; fin ++ ; printf("suffixe = %s\n\n",fin); ptc = NomDeBase ; pt = NomFichier ; while(pt=0) { y = Image_disp.mouse_y(); x = Image_disp.mouse_x(); Image_lue.draw_circle(x,y,1,red).display(Image_disp); if(n>1) { int k ; carre_x[0] = carre_x[0]x ? carre_x[1] : x ; carre_y[0] = carre_y[0]y ? carre_y[1] : y ; } else { carre_x[0] = x ; carre_x[1] = x ; carre_y[0] = y ; carre_y[1] = y ; } n++ ; } } Image_disp.set_title(" .oOo. "); nx = carre_x[1] - carre_x[0] ; ny = carre_y[1] - carre_y[0] ; dim = nx*ny ; if(dim == 0) return 0 ; Valeur_motif = ALLOCATION(dim, double) ; Derivee_temporelle = ALLOCATION(dim, double) ; Point_x = ALLOCATION(dim, int) ; Point_y = ALLOCATION(dim, int) ; // Derivation de la premiere image Derive_image( Image, Image_x, Image_y, Nx, Ny, 0.4 ) ; delta_x = 0.0 ; delta_y = 0.0 ; Detail= Image_lue ; // delimitation du detail pour affichage Detail.crop(carre_x[0], carre_y[0], carre_x[1], carre_y[1]) ; // rechargement de l'image originale Image_lue.load(NomFichier) ; Image_disp.display(Image_lue) ; // conservation des points du motif // leur valeur de niveau de gris dans Valeur_motif // et leur coordonnees dans Point_x et Point_y for( y=carre_y[0], m=0 ; y