[PYTHON] Einfache TopView mit OpenCV

Plötzlich bekam ich einen Raspberry Pi Zero W.

Ich hatte das Glück, am Veröffentlichungstermin bei Switch Science zu bestellen und es war sofort verfügbar! Ich habe dies sofort auf der Kunststoffschiene installiert und es geschafft, es gut zu bedienen. Wir haben den Code für die Montage auf Plarail und Fernbedienung mit Wifi auf dem folgenden Git veröffentlicht. Schauen Sie also bitte vorbei, wenn Sie interessiert sind. https://github.com/Kumapapa2012/Raspberry-Pi-Zero-on-PLA-RAIL-3rd

Über die Draufsicht

Über die Draufsicht auf das Hauptthema. Die Draufsicht ist eine Technologie, mit der das Bild der Kamera so aussieht, als würde es von oben nach unten schauen. Es ist auch in einem bestimmten Firmenauto eingebaut.

Wenn ich über das automatische Fahren nachdenke, indem ich eine Kamera an etwas anbringe, das sich bewegt, nicht nur auf Kunststoffschienen, denke ich, dass ich mir ziemlich Sorgen darüber mache, wie ich es mit einer Monokular-Kamera machen soll. Wie sollten Sie beispielsweise Ihre eigene Fahrtrichtung und Geschwindigkeit bestimmen? Sollte ich einen Merkmalspunkt zwischen einem Bild zu einem bestimmten Zeitpunkt und einem Bild nach einem bestimmten Zeitraum finden und meine eigene Bewegung anhand der Bewegungsposition, des Vergrößerungs- / Verkleinerungsverhältnisses usw. abschätzen? etc. .. .. In der Zwischenzeit fand ich einen Artikel, in dem Top View das Problem leicht lösen konnte. [^ 1]

Das Verfahren ist einfach.

  1. Nehmen Sie ein Bild eines geeigneten Quadrats oder Rechtecks auf, das am unteren Bildschirmrand und in der Mitte von links und rechts ausgerichtet ist, und ermitteln Sie die Koordinaten der oberen Bildschirmbereiche. Das Bild ist wie folgt. image.png Dieses Bild wird mit dem Buchstaben "A" in einem Quadrat von 4 cm aufgenommen. In diesem Fall sind die Koordinaten wie folgt in der Reihenfolge oben links, oben rechts, unten rechts, unten links. T_L=(168,260) T_R=(344,260) B_R=(408,360) B_L=(72,360)

  2. Bestimmen Sie die Bildgröße bei der Konvertierung in TopView, wie Quadrate oder Rechtecke im Bild angezeigt werden sollen, und bestimmen Sie die Scheitelpunktkoordinaten. Es verwendet die längste oder Basis des ursprünglichen "A" -Bildes und berechnet die Koordinaten so, dass sie alle Quadrate gleicher Länge sind. Weitere Informationen finden Sie in meinem Notizbuch [^ 2].

  3. Verwenden Sie cv2.getPerspectiveTransform (), um die Transformationsmatrix unter Verwendung jeder Scheitelpunktkoordinate abzurufen. Diese Umwandlungsmatrix transformiert das trapezförmige "A" auf der Kamera in das von oben gesehene Quadrat "A". Vielleicht sollte diese Umrechnungsmatrix einmal als konstanter Term berechnet werden.

4.cv2.warpPerspective () Wenden Sie die in 3. erhaltene Konvertierungsmatrix auf das Kamerabild an.

Jetzt haben Sie eine Draufsicht.

Wir haben ein Video des tatsächlichen Betriebs auf Youtube hochgeladen. In diesem Video wird der Top View-Effekt auf das vom "Canny" -Algorithmus extrahierte Kamerabild angewendet. Obwohl es etwas verzerrt ist, erscheint "A" in einer ungefähr quadratischen Form.

Obwohl es noch angepasst werden muss, wird das Problem des Umweltbewusstseins in der Draufsicht zu einem 3- bis 2-dimensionalen Problem, und die Anforderungen an den Klassifizierer werden wahrscheinlich viel einfacher sein. Wenn die Schiene in der Draufsicht identifiziert und das Gleis verfolgt werden kann, scheint es beispielsweise einfach zu sein, Hindernisse zu erkennen und anzuhalten.

Verweise

Line detection autopilot using Python + OpenCV. Canny Edge Detection Inline-Anzeige von OpenCV-Bildern mit Jupyter

Recommended Posts

Einfache TopView mit OpenCV
Einfache Python + OpenCV-Programmierung mit Canopy
Easy Grad-CAM mit Pytorch-Gradcam
Katze zurück mit OpenCV erkennen
Binarisierung mit OpenCV / Python
Sprites mit OpenCV drehen
Datenerweiterung mit openCV
Einfaches Debuggen mit ipdb
Stolpern Sie mit opencv3 von Homebrew
Einfache toxische Umgebung mit Jenkins
Gesichtserkennung mit OpenCV von Python
"Apple-Verarbeitung" mit OpenCV3 + Python3
[Analyse des gemeinsamen Auftretens] Einfache Analyse des gemeinsamen Auftretens mit Python! [Python]
Versuchen Sie die Kantenerkennung mit OpenCV
Bildbearbeitung mit Python OpenCV
Kameraerfassung mit Python + OpenCV
[Python] Verwenden von OpenCV mit Python (Basic)
Einfache Ordnersynchronisation mit Python
Binarisieren Sie Fotodaten mit OpenCV
Machen Sie es mit der Syntax einfach
Loop-Video-Laden mit opencv
Einfaches Web-Scraping mit Scrapy
Echtzeit-Kantenerkennung mit OpenCV
Gesichtserkennung mit Python + OpenCV
Einfache Python-Kompilierung mit NUITKA-Utilities
Einfacher HTTP-Server mit Python
Einfache Proxy-Anmeldung mit Django-Hijack
Gesichtserkennung / Schneiden mit OpenCV
Probieren Sie OpenCV mit Google Colaboratory aus
Erstellung eines Kaskadenklassifikators mit opencv
Verwenden von OpenCV mit Python @Mac
Bilderkennung mit Keras + OpenCV
Anime-Gesichtserkennung mit OpenCV
[Python] Mit OpenCV können Sie problemlos Bilddateien mit Seriennummern lesen
Leuchtendes Leben mit Python und OpenCV
Grundlagen der Echtzeit-Bildverarbeitung mit opencv
Einfache Vorhersage von Zeitreihen mit Prophet
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
[Python] Einfache Parallelverarbeitung mit Joblib
Seien Sie vorsichtig mit einfachen Methodenreferenzen
Einfacher Slackbot mit Docker und Errbot
Einfache Installation von OpenCV auf RaspberryPi 3+
[Python] Verwenden von OpenCV mit Python (Kantenerkennung)
Löschen Sie bestimmte Farben mit OpenCV + PySimpleGUI
Einfache Jupyter-Umgebungskonstruktion mit Cloud9
Einfache GUI App mit Tkinter Text
Einfach pyspark mit conda installieren
Mit OpenCV die einfachsten Fehler finden
[OpenCV] Persönliche Identifikation mit Gesichtsfoto
Einfache Mailübertragung mit Eile Python3
Versuchen Sie die Gesichtserkennung mit Python + OpenCV
Bayesianische Optimierung, die mit Python sehr einfach ist
Sprites mit OpenCV # 2 drehen ~ Mastering cv2.warpAffine () ~
Schneiden Sie das Gesicht mit Python + OpenCV aus
Gesichtserkennung mit Kamera mit opencv3 + python2.7
OpenCV-Funktionserkennung mit Google Colaboratory
Einfacher AWS S3-Test mit MinIO
Suchen Sie mit opencv nach phasenidentischen zusammengesetzten Wörtern
Einfache japanische Schrifteinstellung mit matplotlib