Cours:Classif : Différence entre versions
(→Livrable 1 : acquisition d'image) |
|||
Ligne 30 : | Ligne 30 : | ||
La PiCam s'interface en exploitant la librairie [https://github.com/raspberrypi/libcamera LibCamera]. | La PiCam s'interface en exploitant la librairie [https://github.com/raspberrypi/libcamera LibCamera]. | ||
+ | '''Démo''' : | ||
* Télécharger depuis GitHub (<code>git clone ...</code>), ce projet de démo : https://github.com/edward-ardu/libcamera-cpp-demo/tree/main | * Télécharger depuis GitHub (<code>git clone ...</code>), ce projet de démo : https://github.com/edward-ardu/libcamera-cpp-demo/tree/main | ||
* Le compiler et l'exécuter pour tester. | * Le compiler et l'exécuter pour tester. | ||
Ligne 39 : | Ligne 40 : | ||
*** comment l'acquisition d'une touche est-elle gérée ? | *** comment l'acquisition d'une touche est-elle gérée ? | ||
*** ... | *** ... | ||
+ | |||
+ | '''OneShot''' : | ||
* copier le dossier de ce programme exemple vers un nouveau dossier <code>OneShot</code> | * copier le dossier de ce programme exemple vers un nouveau dossier <code>OneShot</code> | ||
− | + | * modifier le <code>main.cpp</code> en l'alégeant, afin d'obtenir un programme qui | |
# dès son lancement, lance une acquisition d'image ; | # dès son lancement, lance une acquisition d'image ; | ||
# attend que cette acquisition soit terminée | # attend que cette acquisition soit terminée | ||
# affiche l'image, et attend l'appui d'une touche | # affiche l'image, et attend l'appui d'une touche | ||
# se termine | # se termine | ||
+ | |||
+ | '''Avec CImg''' : | ||
* copier ce dossier <code>OneShot</code> vers un dossier <code>OneshotCimg</code> | * copier ce dossier <code>OneShot</code> vers un dossier <code>OneshotCimg</code> | ||
− | + | * Télécharger la libraire [https://cimg.eu/ CImg] et placer <code>CImg.h</code> dans le dossier source | |
− | + | * Modifier le <code>main.cpp</code> |
Version du 28 janvier 2025 à 10:21
TP Classification : détection d'objet en temps réel par vision
Le travail de cette étape va consister à
- analyser des images acquises en "temps réel" afin de détecter et identifier des objets
- les objets seront
- dans un premier temps des jetons de nain jaune
- dans un second temps des briques lego.
Technos matérielles et logicielles
Vous utiliserez :
- Une Rpi 4 que vous programmerez depuis des postes utilisés en terminaux connectés par
ssh
, avec redirection graphique (option- X
). - Une camera PiCam Wide (grand angle)
- la librairie opencv pour la reconnaissance
- la librairie CImg pour des traitements bas niveaux et affichages : https://cimg.eu/
Prise d'images en terminal
- Connecter (si cela n'est pas fait) la PiCam à la Rpi4
- Tester la PiCam avec
libcamera-hello
(la capture doit s'afficher sur l'écran de la Rpi) - Tester l'acquisition d'image avec l'éxecutable
libcamera-still
- Explorer les options de cette application (
libcamera-still -h
), en particulier-n
,--immediate
,--width
,--height
et-o
Voir la page suivante pour le détails des options possibles : https://www.raspberrypi.com/documentation/computers/camera_software.html
Livrable 1 : acquisition d'image
La PiCam s'interface en exploitant la librairie LibCamera.
Démo :
- Télécharger depuis GitHub (
git clone ...
), ce projet de démo : https://github.com/edward-ardu/libcamera-cpp-demo/tree/main - Le compiler et l'exécuter pour tester.
- Prendre le temps d'analyser le programme
main.cpp
pour comprendre :- comment il fonctionne ;
- comment l'image est acquise et utilisée dans openCV :
- quel est l'objet openCV qui contient l'image ?
- comment est affichée cette image ?
- comment l'acquisition d'une touche est-elle gérée ?
- ...
OneShot :
- copier le dossier de ce programme exemple vers un nouveau dossier
OneShot
- modifier le
main.cpp
en l'alégeant, afin d'obtenir un programme qui
- dès son lancement, lance une acquisition d'image ;
- attend que cette acquisition soit terminée
- affiche l'image, et attend l'appui d'une touche
- se termine
Avec CImg :
- copier ce dossier
OneShot
vers un dossierOneshotCimg
- Télécharger la libraire CImg et placer
CImg.h
dans le dossier source - Modifier le
main.cpp