Machen Sie die ersten Schritte in der Augmented-Reality-Programmierung, indem Sie lernen, wie Sie Inhaltsplatzhalter generieren.
Bei Augmented Reality ist die Positionierung virtueller Objekte und Overlays entscheidend. Hier kommen die ArUco-Marker ins Spiel. ArUco-Marker sind einfache binäre Muster, die Sie in echten Wortszenen positionieren können, um digitale Inhalte zu überlagern.
Sie können sie auf Papier drucken, auf einem Bildschirm anzeigen oder auf reale Objekte projizieren. Diese Flexibilität macht sie zu einer beliebten Wahl für Computer-Vision-Anwendungen.
Das ArUco-Modul und die OpenCV-Bibliothek
Um ArUco-Marker zu generieren, benötigen Sie das ArUco-Modul, das Teil der OpenCV-Bibliothek ist. OpenCV ist eine Bibliothek, die viele Tools und Funktionen zum Entwickeln enthält Computer-Vision-Anwendungen.
Mit dem Modul können Sie ArUco-Marker generieren, erkennen und erkennen. Sie können damit auch eine Posenschätzung durchführen. Dies wiederum ermöglicht es, virtuelle Objekte an der realen Welt auszurichten und so ein immersives und nahtloses Benutzererlebnis zu schaffen.
Einrichten Ihrer Umgebung
Erstellen Sie eine neue virtuelle Python-Umgebung. Dadurch wird sichergestellt, dass es bei der Installation der erforderlichen Bibliotheken Ihres Projekts zu keinem Paketversionskonflikt kommt. Gehen Sie dann zum Terminal und führen Sie den folgenden Befehl aus, um OpenCV zu installieren.
pip installiere opencv-contrib-python
Der obige Befehl installiert die OpenCV-Contrib-Bibliothek. Dieses enthält das ArUco-Modul, mit dem Sie den Markergenerator erstellen. Stellen Sie sicher, dass Sie diese Version und nicht OpenCV-Python installieren, da letztere nicht die von Ihnen benötigte Funktionalität enthält.
Der vollständige Quellcode ist in a verfügbar GitHub-Repository.
Erstellen des ArUco Maker Generator-Programms
Das Erstellen des ArUco-Markierungsprogramms ist recht einfach. Dies liegt daran, dass das AruCo-Modul den Großteil der schweren Arbeit für Sie erledigt. Beginnen Sie mit dem Import von OpenCV, damit Sie dessen Funktionen und Tools in Ihrem Code verwenden können.
importieren Lebenslauf 2
Definieren Sie eine Funktion, die einen einzelnen Marker mit einer bestimmten ID generiert. Dies ist ideal, wenn die Marker nicht in großen Mengen benötigt werden.
defgenerieren_single_marker(aruco_dict):
marker_size = int (input(„Geben Sie die Markierungsgröße ein:“))
marker_id = int (input(„Geben Sie die Markierungs-ID ein:“))marker_img = cv2.aruco.generateImageMarker (aruco_dict, marker_id,
marker_size)cv2.imwrite(„marker_{}.png“.format (marker_id), marker_img)
marker_img = cv2.imread(„marker_{}.png“.format (marker_id))
cv2.imshow("Marker", marker_img)
drucken("Maße:", marker_img.shape)
cv2.waitKey(0)
Definieren Sie dann eine Funktion, die eine bestimmte Anzahl von Markern in großen Mengen generiert. Die Anzahl der Marker, die Sie generieren können, variiert je nach OpenCV-Wörterbuch Sie nutzen. Dies liegt daran, dass einige Wörterbücher die Generierung von mehr Markierungen unterstützen als andere.
defgenerieren_bulk_markers(aruco_dict):
marker_size = int (input(„Geben Sie die Markierungsgröße ein:“))
num_markers = int (input(„Geben Sie die Anzahl der zu generierenden Marker ein:“))
marker_imgs = []für marker_id In Bereich (num_markers):
marker_img = cv2.aruco.generateImageMarker (aruco_dict, marker_id,
marker_size)cv2.imwrite(„marker_{}.png“.format (marker_id), marker_img)
marker_imgs.append (cv2.imread(„marker_{}.png“.format (marker_id)))
für marker_img In marker_imgs:
cv2.imshow("Marker", marker_img)
drucken("Maße:", marker_img.shape)
cv2.waitKey(0)
Definieren Sie abschließend eine Hauptfunktion, die den Programmablauf steuert und den Benutzer nach der gewünschten Operation fragt. Stellen Sie sicher, dass es zuerst ausgeführt wird, wenn das Programm ausgeführt wird.
defhauptsächlich():
aruco_dict = cv2.aruco.getPredefinedDictionary (cv2.aruco. DICT_4X4_50)user_input = Eingabe(„Drücken Sie ‚1‘, um einen einzelnen Marker zu generieren, oder“
„‚2‘ zum Generieren von Markierungen in großen Mengen:“)Wenn user_input == "1":
generieren_single_marker (aruco_dict)
elif user_input == "2":
generic_bulk_markers (aruco_dict)
anders:
drucken("Ungültige Eingabe. Bitte versuche es erneut.")
Wenn __name__ == "__hauptsächlich__":
hauptsächlich()
Führen Sie nun das Programm aus, um einen einzelnen Marker oder in großen Mengen zu generieren. Die Ausgabe des Programms sieht etwa so aus:
Die Ausgabe zeigt einen generierten ArUco-Marker. Das Programm speichert jeden Marker mit einer Nummer am Ende seines Namens, die die Marker-ID darstellt.
Was kommt als nächstes nach der Generierung von ArUco-Markern?
Nachdem Sie ArUco-Marker generiert haben, können Sie Ihre eigene einfache Computer-Vision-Anwendung erstellen. Auf diese Weise lernen Sie, wie Sie die Markierungen verwenden, um digitale Informationen mit Bildern aus der realen Welt zu überlagern. Es wird Ihnen auch helfen, zu verstehen, wie die Markierungen zum gesamten nahtlosen und immersiven Benutzererlebnis beitragen.