Опенсорс
May 14, 2023

Semaphore: когда клавиатура — это ты сам🤸‍♀️

Мы привыкли, что взаимодействие с компьютером — это стук пальцев по клавишам и клики мыши. Но некоторые энтузиасты фана ради возвращаются к истокам и заставляют нас двигаться. Сегодня посмотрим на два интересных проекта, которые используют Python, OpenCV и MediaPipe, чтобы превратить ваше тело в универсальное устройство ввода.

Что такое Semaphore и Semaphore Games?

Это два открытых проекта от одного автора, которые с помощью обычной веб-камеры отслеживают положение вашего тела в реальном времени и переводят его в команды для компьютера — по сути, в нажатия клавиш. Никакого специального оборудования, только вы, камера и немного свободного пространства.

В основе лежит библиотека MediaPipe Pose, которая умеет находить 33 ключевые точки на теле человека (суставы, глаза, нос и т.д.) и отслеживать их перемещение. Дальше — простая геометрия, которая и превращает ваши движения в код.

Давайте разберем каждый проект по отдельности.

Semaphore — клавиатура для гиков

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

Но буквами дело не ограничивается. Весь функционал стандартной клавиатуры реализован через другие жесты:

  • Shift: открытые ладони вместо кулаков.
  • Backspace: закрыть рот обеими руками.
  • Цифры и спецсимволы: присесть во время основной позы.
  • Command/Control: поднять левую или правую ногу.
  • Стрелки: скрестить руки и поднять ногу в нужном направлении.
  • Повтор символа: подпрыгнуть.

Автор честно говорит, что это сделано под Mac и использует кастомную библиотеку для эмуляции нажатий, но адаптировать под Windows, думаю, не составит труда.

Semaphore Games — твой геймпад это всё твое тело

Второй проект, Semaphore Games, развивает эту идею, но уже в игровом ключе. Здесь нет привязки к семафорной азбуке, зато есть полная свобода кастомизации.

Ключевая фишка Semaphore Games — возможность создавать собственные раскладки управления для разных игр с помощью простого CSV-файла.

Вы создаете файл, где каждой позе или движению сопоставляете одно или несколько нажатий клавиш.

Доступные действия включают:

  • Положение левой/правой руки (с шагом в 45 градусов).
  • Подъём левой/правой ноги (прямой, высокий, согнутой в колене).
  • Скрещивание рук.
  • Прыжок.
  • Приседание.
  • Закрытие рта руками.

Проект поддерживает до двух игроков, разделяя экран пополам. Автор сразу предупреждает: для комфортной игры понадобится много места, хорошее освещение и, желательно, внешний монитор, чтобы вы видели, что происходит.

Все это, конечно, забавно, но для разработчиков — это отличный пет-проект, чтобы поиграться с computer vision, не погружаясь в математические дебри.