Cours:Classif
Révision datée du 28 janvier 2025 à 10:47 par Fredmn (discussion | contributions)
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
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)