Faceți primii pași în programarea în realitate augmentată învățând cum să generați substituenți de conținut.

Când vine vorba de realitate augmentată, poziționarea obiectelor virtuale și a suprapunerilor este crucială. Aici intervin markerii ArUco. Markerii ArUco sunt modele binare simple pe care le puteți poziționa în scene de cuvinte reale pentru a suprapune conținut digital.

Le puteți imprima pe hârtie, le puteți afișa pe un ecran sau le puteți proiecta pe obiecte din lumea reală. Această flexibilitate le face o alegere populară în aplicațiile de viziune computerizată.

Modulul ArUco și biblioteca OpenCV

Pentru a genera markeri ArUco, aveți nevoie de modulul ArUco care face parte din biblioteca OpenCV. OpenCV este o bibliotecă care conține o mulțime de instrumente și funcții pentru dezvoltare aplicații de viziune computerizată.

Modulul vă permite să generați, detectați și recunoașteți markeri ArUco. De asemenea, vă permite să efectuați estimarea poziției. Acest lucru face posibilă, la rândul său, alinierea obiectelor virtuale la lumea reală, creând o experiență de utilizator captivantă și fără întreruperi.

instagram viewer

Configurarea mediului

Creați un nou mediu virtual Python. Acest lucru va asigura că nu există niciun conflict de versiune a pachetului atunci când instalați bibliotecile necesare pentru proiect. Apoi treceți la terminal și rulați următoarea comandă pentru a instala OpenCV.

pip install opencv-contrib-python

Comanda de mai sus instalează biblioteca OpenCV contrib. Acesta conține modulul ArUco pe care îl veți folosi pentru a crea generatorul de markeri. Asigurați-vă că instalați această versiune, nu OpenCV-python, deoarece acesta din urmă nu include funcționalitatea de care aveți nevoie.

Codul sursă complet este disponibil în a Depozitul GitHub.

Crearea programului ArUco Maker Generator

Crearea programului de marcare ArUco este destul de simplă. Acest lucru se datorează faptului că modulul AruCo face cea mai mare parte a sarcinilor grele pentru dvs. Începeți prin a importa OpenCV pentru a vă permite să utilizați funcțiile și instrumentele sale în codul dvs.

import cv2

Definiți o funcție care va genera un singur marker cu un anumit ID. Acest lucru va satisface atunci când markerii nu sunt necesari în vrac.

defgenerate_single_marker(aruco_dict):
dimensiunea_marker = int (input("Introduceți dimensiunea markerului: "))
marker_id = int (input("Introduceți ID-ul markerului: "))

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("Marcator", marker_img)

imprimare("Dimensiuni:", marker_img.shape)

cv2.waitKey(0)

Definiți apoi o funcție care va genera un anumit număr de markeri în bloc. Numărul de markeri pe care îi puteți genera va varia în funcție de Dicționar OpenCV să utilizați. Acest lucru se datorează faptului că unele dicționare susțin generarea de mai mulți markeri decât altele.

defgenerate_bulk_markers(aruco_dict):
dimensiunea_marker = int (input("Introduceți dimensiunea markerului: "))
num_markers = int (input("Introduceți numărul de marcatori de generat: "))
marker_imgs = []

pentru marker_id în interval (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)))

pentru marker_img în marker_imgs:
cv2.imshow("Marcator", marker_img)
imprimare("Dimensiuni:", marker_img.shape)
cv2.waitKey(0)

În cele din urmă, definiți o funcție principală care va controla fluxul programului și va cere utilizatorului operația dorită. Asigurați-vă că rulează mai întâi când se execută programul.

defprincipal():
aruco_dict = cv2.aruco.getPredefinedDictionary (cv2.aruco. DICT_4X4_50)

user_input = input(„Apăsați „1” pentru a genera un singur marcator sau „
„„2” pentru a genera markeri în bloc: „)

dacă user_input == "1":
generate_single_marker (aruco_dict)
elif user_input == "2":
generate_bulk_markers (aruco_dict)
altfel:
imprimare("Intrare nevalidă. Vă rugăm să încercați din nou.")

dacă __nume__ == "__principal__":
principal()

Acum rulați programul pentru a genera un singur marker sau în bloc. Ieșirea programului va arăta cam așa:

Ieșirea arată un marker ArUco generat. Programul salvează fiecare marker cu un număr la sfârșitul numelui său, care reprezintă ID-ul markerului.

Ce urmează după generarea markerilor ArUco?

După generarea markerilor ArUco, vă puteți crea propria aplicație simplă de viziune computerizată. Acest lucru vă va ajuta să învățați cum să utilizați markerii pentru a suprapune informații digitale pe imaginile din lumea reală. De asemenea, vă va ajuta să apreciați modul în care marcatorii contribuie la întreaga experiență de utilizator fluidă și captivantă.