Сделайте первые шаги в программировании дополненной реальности, научившись создавать заполнители контента.

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

Вы можете распечатать их на бумаге, отобразить на экране или спроецировать на объекты реального мира. Эта гибкость делает их популярным выбором в приложениях компьютерного зрения.

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

Для создания маркеров ArUco вам понадобится модуль ArUco, который является частью библиотеки OpenCV. OpenCV — это библиотека, содержащая множество инструментов и функций для разработки приложения компьютерного зрения.

Модуль позволяет генерировать, обнаруживать и распознавать маркеры ArUco. Это также позволяет вам выполнять оценку позы. Это, в свою очередь, позволяет совмещать виртуальные объекты с реальным миром, создавая захватывающий и бесшовный пользовательский интерфейс.

instagram viewer

Настройка вашей среды

Создайте новую виртуальную среду Python. Это гарантирует отсутствие конфликта версий пакетов при установке необходимых библиотек вашего проекта. Затем перейдите к терминалу и выполните следующую команду, чтобы установить OpenCV.

pip установить opencv-contrib-python

Приведенная выше команда устанавливает библиотеку contrib OpenCV. Он содержит модуль ArUco, который вы будете использовать для создания генератора маркеров. Убедитесь, что вы устанавливаете именно эту версию, а не OpenCV-python, потому что последний не включает в себя необходимую вам функциональность.

Полный исходный код доступен в Репозиторий GitHub.

Создание программы-генератора ArUco Maker

Создать программу маркеров ArUco довольно просто. Это связано с тем, что модуль AruCo выполняет большую часть тяжелой работы за вас. Начните с импорта OpenCV, чтобы вы могли использовать его функции и инструменты в своем коде.

Импортировать cv2

Определите функцию, которая будет генерировать один маркер с определенным идентификатором. Это будет полезно, когда маркеры не нужны оптом.

дефgenerate_single_marker(aruco_dict):
marker_size = int (ввод("Введите размер маркера:"))
marker_id = int (ввод("Введите идентификатор маркера:"))

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

cv2.imwrite("маркер_{}.png".format (marker_id), marker_img)

marker_img = cv2.imread("маркер_{}.png".format (marker_id))

cv2.imshow ("Маркер", маркер_изображение)

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

cv2.waitKey(0)

Затем определите функцию, которая будет массово генерировать определенное количество маркеров. Количество маркеров, которые вы можете сгенерировать, зависит от Словарь OpenCV ты используешь. Это связано с тем, что некоторые словари поддерживают создание большего количества маркеров, чем другие.

дефgenerate_bulk_markers(aruco_dict):
marker_size = int (ввод("Введите размер маркера:"))
num_markers = целое (ввод("Введите количество маркеров для генерации: "))
маркер_imgs = []

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

cv2.imwrite("маркер_{}.png".format (marker_id), marker_img)
marker_imgs.append (cv2.imread("маркер_{}.png".format (marker_id)))

для marker_img в маркер_imgs:
cv2.imshow ("Маркер", маркер_изображение)
Распечатать("Размеры:", marker_img.shape)
cv2.waitKey(0)

Наконец, определите основную функцию, которая будет управлять потоком программы и запрашивать у пользователя желаемую операцию. Убедитесь, что он запускается первым при выполнении программы.

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

user_input = ввод ("Нажмите "1", чтобы создать один маркер, или "
"'2' для массового создания маркеров: ")

если пользователь_ввод == "1":
generate_single_marker (aruco_dict)
Элиф пользователь_ввод == "2":
generate_bulk_markers (aruco_dict)
еще:
Распечатать("Неверный Ввод. Пожалуйста, попробуйте еще раз.")

если __имя__ == "__основной__":
основной()

Теперь запустите программу для создания одного маркера или группы. Вывод программы будет выглядеть примерно так:

Выходные данные показывают сгенерированный маркер ArUco. Программа сохраняет каждый маркер с номером в конце его имени, который представляет идентификатор маркера.

Что дальше после создания маркеров ArUco?

После создания маркеров ArUco вы можете создать собственное простое приложение компьютерного зрения. Это поможет вам научиться использовать маркеры для наложения цифровой информации на изображения реального мира. Это также поможет вам оценить, как маркеры способствуют плавному и захватывающему пользовательскому опыту.