Ženkite pirmuosius papildytosios realybės programavimo žingsnius mokydamiesi generuoti turinio rezervavimo ženklus.

Kalbant apie papildytą realybę, labai svarbu nustatyti virtualių objektų ir perdangų padėtį. Štai čia atsiranda ArUco žymekliai. ArUco žymekliai yra paprasti dvejetainiai modeliai, kuriuos galite išdėstyti tikro žodžio scenose, kad perdengtumėte skaitmeninį turinį.

Galite atspausdinti juos ant popieriaus, rodyti ekrane arba projektuoti ant realaus pasaulio objektų. Dėl šio lankstumo jie yra populiarus pasirinkimas kompiuterinio matymo programose.

ArUco modulis ir OpenCV biblioteka

Norėdami generuoti ArUco žymenis, jums reikia ArUco modulio, kuris yra OpenCV bibliotekos dalis. OpenCV yra biblioteka, kurioje yra daug kūrimo įrankių ir funkcijų kompiuterinio matymo programos.

Modulis leidžia generuoti, aptikti ir atpažinti ArUco žymenis. Tai taip pat leidžia atlikti pozos įvertinimą. Tai savo ruožtu leidžia suderinti virtualius objektus su realiu pasauliu, sukuriant įtraukiantį ir vientisą vartotojo patirtį.

instagram viewer

Aplinkos nustatymas

Sukurkite naują Python virtualią aplinką. Tai užtikrins, kad diegiant reikiamas projekto bibliotekas nekils paketo versijos konfliktas. Tada eikite į terminalą ir paleiskite šią komandą, kad įdiegtumėte OpenCV.

pip įdiegti opencv-contrib-python

Aukščiau pateikta komanda įdiegia OpenCV įnašų biblioteką. Jame yra ArUco modulis, kurį naudosite kurdami žymeklio generatorių. Įsitikinkite, kad įdiegėte šią versiją, o ne OpenCV-python, nes pastaroji neapima jums reikalingų funkcijų.

Visą šaltinio kodą rasite a GitHub saugykla.

„ArUco Maker“ generatoriaus programos kūrimas

Sukurti ArUco žymeklio programą yra gana paprasta. Taip yra todėl, kad AruCo modulis atlieka didžiąją dalį sunkių darbų už jus. Pradėkite importuodami OpenCV, kad galėtumėte naudoti jo funkcijas ir įrankius savo kode.

importuoti cv2

Apibrėžkite funkciją, kuri sugeneruos vieną žymeklį su konkrečiu ID. Tai padės, kai žymekliai nebus reikalingi dideliais kiekiais.

defgeneruoti_vieną_žymeklį(aruco_dict):
marker_size = int (input("Įveskite žymeklio dydį:"))
marker_id = int (input("Įveskite žymeklio ID:"))

marker_img = cv2.aruco.generateImageMarker (aruco_dict, marker_id,
žymeklio_dydis)

cv2.imwrite("marker_{}.png".format (marker_id), marker_img)

marker_img = cv2.imread("marker_{}.png".format (marker_id))

cv2.imshow("Žymeklis", marker_img)

spausdinti ("Matmenys:", marker_img.shape)

cv2.waitKey(0)

Tada apibrėžkite funkciją, kuri generuos tam tikrą skaičių žymeklių. Žymeklių, kuriuos galite sugeneruoti, skaičius skirsis priklausomai nuo OpenCV žodynas tu naudoji. Taip yra todėl, kad kai kurie žodynai palaiko daugiau žymeklių generavimą nei kiti.

defgeneruoti_masinius_žymeklius(aruco_dict):
marker_size = int (input("Įveskite žymeklio dydį:"))
num_markers = int (input("Įveskite generuojamų žymeklių skaičių: "))
marker_imgs = []

dėl žymeklio_id in diapazonas (numerio_žymekliai):
marker_img = cv2.aruco.generateImageMarker (aruco_dict, marker_id,
žymeklio_dydis)

cv2.imwrite("marker_{}.png".format (marker_id), marker_img)
marker_imgs.append (cv2.imread("marker_{}.png".format (marker_id)))

dėl žymeklis_img in marker_imgs:
cv2.imshow("Žymeklis", marker_img)
spausdinti ("Matmenys:", marker_img.shape)
cv2.waitKey(0)

Galiausiai apibrėžkite pagrindinę funkciją, kuri valdys programos eigą ir paprašykite vartotojo atlikti norimą operaciją. Įsitikinkite, kad programa paleidžiama pirmiausia.

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

user_input = input("Paspauskite "1", kad sukurtumėte vieną žymeklį arba "
„2“, kad būtų generuojami žymekliai masiškai:)

jeigu user_input == "1":
gener_single_marker (aruco_dict)
elifas user_input == "2":
gener_bulk_markers (aruco_dict)
Kitas:
spausdinti ("Netinkama įvestis. Prašau, pabandykite dar kartą.")

jeigu __vardas__ == "__pagrindinis__":
pagrindinis ()

Dabar paleiskite programą, kad sukurtumėte vieną žymeklį arba masiškai. Programos išvestis atrodys maždaug taip:

Išvestis rodo sugeneruotą ArUco žymeklį. Programa išsaugo kiekvieną žymeklį su numeriu pavadinimo pabaigoje, kuris reiškia žymeklio ID.

Kas toliau sugeneravus ArUco žymenis?

Sugeneravę ArUco žymeklius, galite sukurti savo paprastą kompiuterinės vizijos programą. Tai padės išmokti naudoti žymeklius skaitmeninei informacijai perdengti realiame pasaulyje. Tai taip pat padės įvertinti, kaip žymekliai prisideda prie vientisos ir įtraukiančios vartotojo patirties.