Fortgeschrittenes Tischtennisball-Tracking mit Raspberry Pi und OpenCV
HINWEIS: Dies ist ein fortgeschrittenes Tutorial, nicht für Linux-Einsteiger geeignet.
In diesem Leitfaden zeigen wir, wie man Tischtennisbälle – oder jedes deutlich sichtbare runde Objekt – mit OpenCV auf einem Raspberry Pi detektiert und trackt. Die Technik ist wertvoll für Robotik-Projekte, Sportanalysen oder Hobby-Experimente.
Voraussetzungen
- Raspberry Pi mit aktuellem Raspbian (Download unter raspberrypi.org/downloads)
- USB-Webcam, kompatibel mit dem Pi
- Linux-Host (Linux Mint 17, Ubuntu oder ähnlich) für Entwicklung und Dateiübertragung
- Vertrautheit mit Debian-basierten Systemen
Schritt 1: Ersteinrichtung
- Pi mit Tastatur, Maus, Webcam, Ethernet oder WLAN-Dongle, HDMI-Display und Strom verbinden.
- Einschalten und in die Raspbian-GUI booten.
- Terminal öffnen und OpenCV installieren. Folgen Sie Trevor Appltons umfassender Anleitung zur Bestätigung der Installation (OpenCV auf Raspberry Pi installieren).
bdtct.pyviascpoder USB-Stick in das Home-Verzeichnis des Pi übertragen.
Schritt 2: Tracking-Code ausführen
- Im Pi-Terminal in den Ordner mit
bdtct.pywechseln. - Skript ausführen:
sudo python bdtct.py - Fünf Fenster sollten erscheinen: Originalvideo, „Tracking“-Ansicht und drei HSV-Einstell-Panels.
- Einen Tischtennisball (bevorzugt gelb) der Webcam präsentieren.
- Die „HueComp“, „SatComp“ und „ValComp“-Regler so lange justieren, bis die Ball-Pixel die einzige weiße Region im „Closing“-Fenster sind. Diese Werte für die spätere Nutzung notieren, indem Sie
bdtct.pybearbeiten.
Schritt 3: Algorithmus verstehen
Öffnen Sie bdtct.py in Ihrem Editor, um folgenden Workflow zu sehen:
- Video vom Standardkamera-Device erfassen:
cap = cv2.VideoCapture(-1) - Frames auf 320×240 verkleinern, um die Framerate auf dem Pi zu erhöhen.
- Interaktive Fenster mit Min/Max-Reglern für Hue, Sättigung und Wert erstellen.
- Jeden Frame von BGR nach HSV konvertieren:
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV). - HSV in separate Kanäle aufsplitten.
- Jeden Kanal basierend auf Regler-Bereichen schwellenwertbasiert in binäre Masken umwandeln.
- Die drei Masken per logischem UND kombinieren, um Ball-Pixel zu isolieren.
- Gaußschen Blur anwenden, um das Ergebnis zu glätten.
cv2.HoughCircleszur Kreiserkennung nutzen.- Erkannte Kreise zur Visualisierung auf den Original-Frame zurückzeichnen.
Für tiefere Einblicke siehe die vollständige Projektdokumentation.
Herstellungsprozess
- DIY Solar-betriebene Wetterstation mit Raspberry Pi
- Professionelle Temperaturüberwachung mit Raspberry Pi und DS18B20
- Outdoor-Wetterstation mit Raspberry Pi 2 & ADS-WS1 bauen
- Präzise Temperaturüberwachung im Server-Schrank mit Raspberry Pi
- Neon: Dynamisches Open/Closed Makerspace-Schild mit Raspberry Pi 2 – El Paso, TX
- Line-Tracking-Sensor mit Raspberry Pi – Einfacher KY-033 Tür/Line Detektor
- Professionelle Raspberry Pi Universalfernbedienung mit LIRC bauen
- RF zu DC mit Raspberry Pi wandeln: Hüllkurvendetektor bauen & troubleshooten
- Cycle Chaser: Fahrrad zur nächtlichen Lichtshow mit Raspberry Pi verwandeln
- Echtzeit Pan/Tilt Gesichtstracking auf Raspberry Pi – Praktischer Leitfaden