A faire uniquement à la première séance:
Vous devez installer une librairie. Pour cela, copiez-collez dans une console après l'avoir ouverte avec ALT+F2 lxterm :
echo commence mkdir -p ~/Arduino cd ~/Arduino mkdir -p libraries cd libraries wget https://bvdp.inetdoc.net/files/iut/homographie/homography.zip unzip -o homography.zip rm homography.zip echo fini
Inclure la librairie dans le croquis en écrivant au début:
#include <homography.h>
Ce fichier contient la définition de la classe Homography dont voici une version simplifiée montrant l'interface d'interaction avec la classe:
//B.Vandeportaele LAAS/CNRS 11/2019 class Homography { public: Homography(); ~Homography(); void setP1(float u1,float v1,float u2,float v2); void setP2(float u1,float v1,float u2,float v2); void setP3(float u1,float v1,float u2,float v2); void setP4(float u1,float v1,float u2,float v2); void computeHandHinv(); bool applyH(float u1,float v1,float *ptr_u2,float *ptr_v2); bool applyHinv(float u2,float v2,float *ptr_u1,float *ptr_v1); private: ... };
Pour pouvoir l'utiliser, vous devez déclarer une variable globale dans votre croquis:
Homography hom;
Voici un exemple d'utilisation de cet objet dans setup():
//Définition des 4 correspondances de points définissant l'homographie hom.setP1(1.3,1.1,6.4,4.1); hom.setP2(3.4,63.9,546.13,664.9); hom.setP3(7.8,57.3,106.8,46.1); hom.setP4(10.1,7.7,669.77,41.3); //Calcul de l'homographie et de son inverse hom.computeHandHinv(); //Vérification de l'homographie sur le point 1 float u11,v11,u12,v12,u13,v13,u14,v14; float u21,v21,u22,v22,u23,v23,u24,v24; u11=1.3; v11=1.1; u21=6.4; v21=4.1; float u21p,v21p,u22p,v22p,u23p,v23p,u24p,v24p; hom.applyH(u11,v11,&u21p,&v21p); Serial.print(" "); Serial.print(u21); Serial.print(" / "); Serial.print(u21p); Serial.print(" "); Serial.print(v21); Serial.print(" / "); Serial.print(v21p); Serial.println(); //Vérification de l'homographie inverse sur le point 1 float u11p,v11p,u12p,v12p,u13p,v13p,u14p,v14p; hom.applyHinv(u21,v21,&u11p,&v11p); Serial.print(" "); Serial.print(u11); Serial.print(" / "); Serial.print(u11p); Serial.print(" "); Serial.print(v11); Serial.print(" / "); Serial.print(v11p); Serial.println(); Serial.println("--------------------------------------------------");