Управляем компьютером жестами: создаем систему бесконтактного взаимодействия с ПК

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет, Хабр! Сегодня хочу рассказать о своем небольшом проекте, который позволяет управлять компьютером с помощью жестов, распознаваемых через камеру.

Идея и мотивация

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

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

Стек технологий

Для реализации проекта я использовал:

  • Python 3 — основной язык разработки.

  • OpenCV — обработка изображений с камеры.

  • Mediapipe — библиотека от Google для распознавания положения рук.

  • PyTorch — обучение модели распознавания жестов.

  • Pygame — управление курсором.

Реализация жестов

На текущий момент поддерживаются следующие жесты:

  1. Контроль курсора — движение руки управляет положением курсора.

  2. Левый клик — выполняется определенным жестом.

  3. Правый клик — аналогично, но с другим положением пальцев.

  4. Скроллинг — вертикальные движения руки прокручивают страницу.

Каждый жест проходит через нейросетевую модель, обученную на специально собранном наборе данных. Для распознавания я выбрал компактную feedforward модель, которая обеспечивает высокую точность при минимальных вычислительных затратах, что делает систему быстрой и отзывчивой.

Разработка программы

Разработка началась с изучения существующих решений в области компьютерного зрения. Я протестировал несколько библиотек, таких как OpenCV и Mediapipe, чтобы выбрать наиболее удобный инструмент для работы с жестами. Затем перешел к созданию базового прототипа, который отслеживал положение руки и управлял курсором.

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

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

Сбор данных и обучение модели

Для увеличения точности распознавания пользователи могут самостоятельно собрать датасет, с помощью удобного скрипта:

python create_dataset.py

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

python train.py

После завершения обучения обновленная модель сохраняется в gesture_model.pth и может быть использована в основном приложении.

Итоги и перспективы

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

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

  • Расширение набора жестов (например, управление громкостью).

  • Оптимизация модели для работы на слабых устройствах.

Проект доступен на GitHub, и я буду рад вашему фидбеку и предложениям!

Буду рад, если подпишитесь на мой Telegram канал: https://t.me/curseknowledge

Источник: https://habr.com/ru/articles/884854/


Интересные статьи

Интересные статьи

В сфере электронной коммерции предприниматели стоят перед важным выбором: использовать готовые SaaS-решения или разворачивать собственную инфраструктуру. Это решение может значительно повлиять на бюдж...
Dishonored меня всегда впечатляла не только своим игровым процессом, но и планировкой уровней, архитектурой мира. Впечатляло всегда и множество интересных задач, сцен в игре, которых встречается, дейс...
Как широко известно, с 1 января 2017 года наступает три важных события в жизни интернет-магазинов.
Если вы последние лет десять следите за обновлениями «коробочной версии» Битрикса (не 24), то давно уже заметили, что обновляется только модуль магазина и его окружение. Все остальные модули как ...
Авторы: к.ф.-м.н. Чернов А.В. (monsieur_cher) и к.ф.-м.н. Трошина К.Н. Как с помощью самых общих предположений, основанных на знании современных процессорных архитектур, можно восстановить стр...