Tehke esimesed sammud liitreaalsuse programmeerimises, õppides sisu kohahoidjaid looma.
Liitreaalsuse puhul on virtuaalsete objektide ja ülekatete positsioneerimine ülioluline. Siin tulevadki kasutusele ArUco markerid. ArUco markerid on lihtsad binaarsed mustrid, mida saate digitaalse sisu katmiseks paigutada pärissõnastseenides.
Saate neid printida paberile, kuvada neid ekraanil või projitseerida reaalmaailma objektidele. See paindlikkus muudab need arvutinägemisrakendustes populaarseks valikuks.
ArUco moodul ja OpenCV raamatukogu
ArUco markerite genereerimiseks vajate ArUco moodulit, mis on osa OpenCV teegist. OpenCV on raamatukogu, mis sisaldab arendamiseks palju tööriistu ja funktsioone arvutinägemise rakendused.
Moodul võimaldab genereerida, tuvastada ja ära tunda ArUco markereid. See võimaldab teil ka poseerimist hinnata. See omakorda võimaldab joondada virtuaalseid objekte reaalse maailmaga, luues kaasahaarava ja sujuva kasutuskogemuse.
Oma keskkonna seadistamine
Looge uus Pythoni virtuaalne keskkond
. See tagab, et projekti nõutavate teekide installimisel ei teki paketiversiooni konflikti. Seejärel minge terminali ja käivitage OpenCV installimiseks järgmine käsk.pip install opencv-contrib-python
Ülaltoodud käsk installib OpenCV kaastööteegi. See sisaldab ArUco moodulit, mida kasutate markeri generaatori loomiseks. Installige kindlasti see versioon, mitte OpenCV-python, sest viimane ei sisalda vajalikke funktsioone.
Täielik lähtekood on saadaval a GitHubi hoidla.
ArUco Maker Generator programmi loomine
ArUco markerprogrammi loomine on üsna lihtne. Seda seetõttu, et AruCo moodul teeb suurema osa raskuste tõstmisest teie eest. Alustage OpenCV importimisega, et saaksite koodis selle funktsioone ja tööriistu kasutada.
importida cv2
Määrake funktsioon, mis loob ühe kindla ID-ga markeri. See sobib juhtudel, kui markereid pole hulgi vaja.
defgener_single_marker(aruco_dict):
marker_size = int (input("Sisestage markeri suurus:"))
marker_id = int (input("Sisestage markeri ID:"))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)
print("Mõõdud:", marker_img.shape)
cv2.waitKey(0)
Seejärel määrake funktsioon, mis genereerib hulgi teatud arvu markereid. Loodavate markerite arv varieerub vastavalt OpenCV sõnastik kasutad. Seda seetõttu, et mõned sõnaraamatud toetavad rohkemate markerite loomist kui teised.
defgenereeri_hulgimarkereid(aruco_dict):
marker_size = int (input("Sisestage markeri suurus:"))
num_markers = int (input("Sisestage genereeritavate markerite arv: "))
marker_imgs = []jaoks marker_id sisse vahemik (number_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)))
jaoks marker_img sisse marker_imgs:
cv2.imshow("Marker", marker_img)
print("Mõõdud:", marker_img.shape)
cv2.waitKey(0)
Lõpuks määratlege põhifunktsioon, mis juhib programmi voogu, ja küsige kasutajalt soovitud toimingut. Veenduge, et see käivitub programmi käivitamisel esimesena.
defpeamine():
aruco_dict = cv2.aruco.getPredefinedDictionary (cv2.aruco. DICT_4X4_50)user_input = input("Ühe markeri loomiseks vajutage "1" või "
"2" markerite hulgi genereerimiseks: ")kui kasutaja_sisend == "1":
gener_single_marker (aruco_dict)
elif kasutaja_sisend == "2":
gener_bulk_markers (aruco_dict)
muidu:
print("Vigane sisestus. Palun proovi uuesti.")
kui __nimi__ == "__main__":
peamine ()
Nüüd käivitage programm, et luua üks marker või hulgi. Programmi väljund näeb välja umbes selline:
Väljund näitab genereeritud ArUco markerit. Programm salvestab iga markeri, mille nime lõpus on number, mis tähistab markeri ID-d.
Mis saab edasi pärast ArUco markerite genereerimist?
Pärast ArUco markerite genereerimist saate luua oma lihtsa arvutinägemise rakenduse. See aitab teil õppida, kuidas kasutada markereid digitaalse teabe ülekandmiseks reaalse maailma visuaalidele. Samuti aitab see teil hinnata, kuidas markerid aitavad kaasa kogu sujuvale ja kaasahaaravale kasutajakogemusele.