Направете първите стъпки в програмирането с добавена реалност, като научите как да генерирате контейнери за съдържание.

Когато става въпрос за добавена реалност, позиционирането на виртуални обекти и наслагвания е от решаващо значение. Ето къде идват маркерите ArUco. Маркерите ArUco са прости двоични модели, които можете да позиционирате в сцени с реални думи, за да наслагвате цифрово съдържание.

Можете да ги отпечатате на хартия, да ги покажете на екран или да ги проектирате върху обекти от реалния свят. Тази гъвкавост ги прави популярен избор в приложенията за компютърно зрение.

Модулът ArUco и OpenCV библиотеката

За да генерирате маркери ArUco, имате нужда от модула ArUco, който е част от библиотеката OpenCV. OpenCV е библиотека, която съдържа много инструменти и функции за разработка приложения за компютърно зрение.

Модулът ви позволява да генерирате, откривате и разпознавате ArUco маркери. Освен това ви позволява да извършвате оценка на позата. Това от своя страна прави възможно приравняването на виртуални обекти към реалния свят, създавайки завладяващо и безпроблемно потребителско изживяване.

instagram viewer

Настройване на вашата среда

Създайте нова виртуална среда на Python. Това ще гарантира, че няма конфликт на версията на пакета, когато инсталирате необходимите библиотеки на вашия проект. След това продължете към терминала и изпълнете следната команда, за да инсталирате OpenCV.

pip инсталирайте opencv-contrib-python

Горната команда инсталира библиотеката за принос на OpenCV. Това съдържа модула ArUco, който ще използвате, за да създадете генератора на маркери. Уверете се, че инсталирате тази версия, а не OpenCV-python, защото последният не включва функционалността, от която се нуждаете.

Пълният изходен код е достъпен в a GitHub хранилище.

Създаване на програмата за генериране на ArUco Maker

Създаването на програмата за маркер ArUco е доста просто. Това е така, защото модулът AruCo извършва по-голямата част от тежката работа вместо вас. Започнете с импортиране на OpenCV, за да можете да използвате неговите функции и инструменти във вашия код.

импортиране cv2

Дефинирайте функция, която ще генерира единичен маркер с конкретен идентификатор. Това ще се погрижи, когато маркерите не са необходими в насипно състояние.

дефгенериране_единичен_маркер(aruco_dict):
marker_size = int (вход("Въведете размера на маркера: "))
marker_id = int (вход(„Въведете ID на маркера:“))

marker_img = cv2.aruco.generateImageMarker (aruco_dict, marker_id,
размер на маркера)

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

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

cv2.imshow("Маркер", marker_img)

печат ("Размери:", marker_img.shape)

cv2.waitKey(0)

След това дефинирайте функция, която ще генерира определен брой маркери групово. Броят на маркерите, които можете да генерирате, ще варира в зависимост от OpenCV речник ти използваш. Това е така, защото някои речници поддържат генерирането на повече маркери от други.

дефгенериране_насипни_маркери(aruco_dict):
marker_size = int (вход("Въведете размера на маркера: "))
num_markers = int (вход("Въведете броя на маркерите за генериране: "))
marker_imgs = []

за marker_id в диапазон (брой_маркери):
marker_img = cv2.aruco.generateImageMarker (aruco_dict, marker_id,
размер на маркера)

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

за marker_img в marker_imgs:
cv2.imshow("Маркер", marker_img)
печат ("Размери:", marker_img.shape)
cv2.waitKey(0)

И накрая, дефинирайте основна функция, която ще контролира потока на програмата и ще пита потребителя за желаната операция. Уверете се, че той се изпълнява първо, когато програмата се изпълни.

дефосновен():
aruco_dict = cv2.aruco.getPredefinedDictionary (cv2.aruco. DICT_4X4_50)

user_input = вход("Натиснете '1', за да генерирате единичен маркер или "
"'2' за групово генериране на маркери: ")

ако user_input == "1":
генериране_единичен_маркер (aruco_dict)
елиф user_input == "2":
генериране на групови_маркери (aruco_dict)
друго:
печат („Невалиден вход. Моля, опитайте отново.")

ако __име__ == "__основен__":
основен ()

Сега стартирайте програмата, за да генерирате един маркер или групово. Резултатът от програмата ще изглежда така:

Резултатът показва генериран ArUco маркер. Програмата записва всеки маркер с число в края на името му, което представлява ID на маркера.

Какво следва след генерирането на ArUco маркери?

След като генерирате маркери ArUco, можете да създадете свое собствено просто приложение за компютърно зрение. Това ще ви помогне да научите как да използвате маркерите за наслагване на цифрова информация върху реални изображения. Освен това ще ви помогне да оцените как маркерите допринасят за цялото безпроблемно и завладяващо потребителско изживяване.