Cours:Classif : Différence entre versions
Ligne 9 : | Ligne 9 : | ||
** dans un second temps des briques lego. | ** dans un second temps des briques lego. | ||
− | + | === Technos matérielles et logicielles === | |
Vous utiliserez : | Vous utiliserez : | ||
Ligne 17 : | Ligne 17 : | ||
* la librairie CImg pour des traitements bas niveaux et affichages : https://cimg.eu/ | * 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 | * Connecter (si cela n'est pas fait) la PiCam à la Rpi4 | ||
Ligne 26 : | Ligne 26 : | ||
Voir la page suivante pour le détails des options possibles : https://www.raspberrypi.com/documentation/computers/camera_software.html | 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 [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 41 : | Ligne 41 : | ||
*** ... | *** ... | ||
− | + | ====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 | * modifier le <code>main.cpp</code> en l'alégeant, afin d'obtenir un programme qui | ||
Ligne 49 : | Ligne 49 : | ||
# 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 | * Télécharger la libraire [https://cimg.eu/ CImg] et placer <code>CImg.h</code> dans le dossier source |
Version du 28 janvier 2025 à 10:47
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.
Sommaire
[masquer]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
pour
- convertir l'image openCV couleur en niv. de gris
- convertir l'image niv. de gris openCV en image CImg
- avec CImg : afficher l'image et attendre la fermeture de la fenêtre.
- Il sera nécessaire d'ajouter :
- dans le
main.cpp
:
- dans le
#include "CImg.h"
#define cimg_plugin1 "cvMat.h"
using namespace cimg_library;
- dans le fichier
CMakeLists.txt
- dans le fichier
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
et de modifier
target_link_libraries(libcamera-demo "${LIBCAMERA_LIBRARIES}" ${OpenCV_LIBS})
en
target_link_libraries(libcamera-demo "${LIBCAMERA_LIBRARIES}" ${OpenCV_LIBS} X11)