Suivi avancé de balle de ping-pong sur Raspberry Pi avec OpenCV
NOTE : Ce tutoriel est avancé, non adapté aux débutants Linux.
Dans ce guide, nous montrons comment détecter et suivre des balles de ping-pong – ou tout objet circulaire bien visible – en utilisant OpenCV sur un Raspberry Pi. Cette technique est précieuse pour la robotique, l'analyse sportive ou l'expérimentation amateur.
Prérequis
- Raspberry Pi exécutant le dernier Raspbian (téléchargeable sur raspberrypi.org/downloads)
- Webcam USB compatible avec le Pi
- Hôte Linux (Linux Mint 17, Ubuntu ou similaire) pour le développement et le transfert de fichiers
- Familiarité avec les systèmes basés sur Debian
Étape 1 : Configuration initiale
- Connectez le Pi au clavier, souris, webcam, clé Ethernet ou Wi‑Fi, écran HDMI et alimentation.
- Mettez sous tension et démarrez sur l'interface graphique Raspbian.
- Ouvrez un terminal et installez OpenCV. Suivez le guide complet de Trevor Appleton pour confirmer l'installation (Installer OpenCV sur Raspberry Pi).
- Transférez
bdtct.pyvers le répertoire personnel du Pi viascpou une clé USB.
Étape 2 : Exécuter le code de suivi
- Dans le terminal du Pi, accédez au dossier contenant
bdtct.py. - Exécutez le script :
sudo python bdtct.py - Cinq fenêtres doivent apparaître : la vidéo originale, une vue « tracking » et trois panneaux de réglage HSV.
- Présentez une balle de ping-pong (jaune de préférence) à la webcam.
- Ajustez les curseurs « HueComp », « SatComp » et « ValComp » jusqu'à ce que les pixels de la balle soient la seule région blanche dans la fenêtre « closing ». Notez ces valeurs pour une utilisation future en modifiant
bdtct.py.
Étape 3 : Comprendre l'algorithme
Ouvrez bdtct.py dans votre éditeur favori pour voir le flux de travail suivant :
- Capture vidéo depuis la caméra par défaut :
cap = cv2.VideoCapture(-1) - Redimensionnement des images à 320×240 pour augmenter le taux d'images sur le Pi.
- Création de fenêtres interactives avec curseurs min/max pour Teinte, Saturation et Valeur.
- Conversion de chaque image de BGR vers HSV :
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV). - Séparation des canaux HSV.
- Seuillage de chaque canal selon les plages des curseurs pour produire des masques binaires.
- Combinaison des trois masques par un ET logique pour isoler les pixels de la balle.
- Application d'un flou gaussien pour lisser le résultat.
- Utilisation de
cv2.HoughCirclespour détecter les formes circulaires. - Dessin des cercles détectés sur l'image originale pour la visualisation.
Pour plus de détails, consultez la documentation complète du projet.
Processus de fabrication
- Station météo solaire DIY avec Raspberry Pi
- Surveillance de température professionnelle sur Raspberry Pi avec DS18B20
- Construction d'une station météo extérieure avec Raspberry Pi 2 et ADS‑WS1
- Surveillance précise de la température dans un placard serveur avec Raspberry Pi
- Neon : Panneau dynamique Ouvert/Fermé pour Makerspace alimenté par Raspberry Pi 2 – El Paso, TX
- Capteur de suivi de ligne KY‑033 avec Raspberry Pi : Détecteur de porte/lignes simple
- Construire une télécommande universelle Raspberry Pi professionnelle avec LIRC
- Conversion RF vers DC avec Raspberry Pi : Construction et dépannage d'un détecteur d'enveloppe
- Cycle Chaser : Transformer votre vélo en spectacle lumineux nocturne avec Raspberry Pi