OpenCV

Um ein anderes Fahrzeug mit dem speziellen Symbol zu verfolgen, wurde eine Klasse für die Kameraverfolgung erstellt. Dort nimmt die Kamera ein Bild auf, das Bild wird dann mit OpenCV verarbeitet, die Position des Symbols wird berechnet, und die Position wird an das Lenkservo PWM übergeben.

Das spezielle Symbol, das die Kamera erkennt, ist ein Dreieck in einem größeren Kreis.
Der Kontrast zwischen den beiden Formen und dem Außenrahmen sollte so groß wie möglich sein.

Die Klasse initialisiert zuerst die Parameter für die Formerkennung, die Bildverarbeitung, und die Kameraeinstellungen.
Bei jedem Aufruf der Tracking-Funktion wird ein Bild erfasst und verarbeitet, danach werden die Koordinaten für die Lenkung und das Bild für die GUI aktualisiert.

Die Bildverarbeitung erfolgt in mehreren Schritten:
Zuerst wird das Kamerabild mit dem picamera Python-Modul aufgenommen.

Zweitens wird das Bild durch die Anwendung einer Canny-Edge-Detection verarbeitet, um die genauen Formen zu erhalten, und es wird ein Gaussian-Blur angewendet, um die Kanten zu glätten.

Tracking-Symbol
 
 

Drittens werden die Konturen im verarbeiteten Bild extrahiert. Jede Kontur wird auf besondere Eigenschaften wie Größe, Anzahl der Ecken, Breiten-/Höhenverhältnis überprüft und dann entweder in die Liste der Kreise oder Dreiecke aufgenommen.

Dann wird für jedes Dreieck und jeden Kreis ihre Zentrumsnähe und Größe überprüft, um sicherzustellen, dass die Kombination den speziellen Symbol entsprechen.

Schließlich, wird die passende Kombination erkannt, wird sie auf dem Bild markiert und ihre X-Koordinate für die Lenkung wird gespeichert.