Персональный блог: https://blog.csdn.net/weixin_43654363
Блог с кодом этого репозитория: https://blog.csdn.net/weixin_43654363/article/details/120809464
Обновления: 2022.04.18: По просьбам пользователей, обновленный код для распознавания жестов с использованием библиотеки mp. Код теперь работает корректно.
Волна искусственного интеллекта охватывает весь мир. Этот концепт, который обсуждали десятилетиями, в последние годы развивается с невероятной скоростью. Машинное обучение, глубокое обучение, компьютерное зрение и другие термины постепенно проникают в нашу повседневную жизнь, являясь частью области искусственного интеллекта.
Компьютерное зрение является одним из подразделений области искусственного интеллекта. Это кросс-дисциплинарная наука, которая включает в себя компьютерную науку, математику, инженерию, физику, биологию и психологию. Многие ученые считают, что компьютерное зрение открыло новые пути для развития искусственного интеллекта.
Кратко говоря, компьютерное зрение - это процесс, при котором компьютеру предоставляются "глаза", чтобы он мог наблюдать за миром, а затем использовать свои вычислительные мощности для быстрого анализа и обслуживания людей.Сегодня мы рассмотрим простые методы распознавания жестов с использованием Python и компьютерного зрения. Мы будем распознавать жесты — цифры (один, два, три, четыре, пять и большой палец в знак одобрения). Если вам понравилась эта статья или она вам помогла, не забудьте поставить лайк и подписаться!# Предварительная подготовка
В этой статье мы будем использовать модуль OpenCV и модуль модели рук Mediapipe в Python. Методы установки через pip следующие:
OpenCV — это часто используемый модуль для распознавания изображений.
Mediapipe — это открытая библиотека для машинного обучения, созданная Google.
pip install opencv-python
pip install mediapipe
Если у вас установлена Anaconda, рекомендуется устанавливать эти модули в среде Anaconda, чтобы создать более конкретную среду для машинного обучения.
После установки модулей OpenCV и Mediapipe вы можете включить их в свой Python-код следующим образом:
import cv2
import mediapipe as mp
Если код работает корректно, значит модуль opencv-python установлен успешно. Теперь мы можем приступить к основной теме сегодняшней статьи!
Для распознавания жестов нам нужно найти информацию о руках в переданных изображениях. Мы будем использовать модель Mediapipe для поиска модели рук и создания модуля для распознавания рук, который мы будем использовать в последующих шагах для распознавания жестов.HandTrackingModule.py
# -*- coding:utf-8 -*-
"""
КОД >>> ПОД НАБЛЮДЕНИЕМ В CAIXYPROMISE.
СЛОГАН >>> СТРЕМИМСЯ К ЛУЧШЕМУ.
ПОСТОЯННО СТРЕМИМСЯ К САМОУПРАВЛЕНИЮ.
@ By: CaixyPromise
@ Date: 2021-10-17
"""
import cv2
import mediapipe as mp
# -*- coding:utf-8 -*-
"""
КОД >>> ПОД НАБЛЮДЕНИЕМ В CAIXYPROMISE.
СЛОГАН >>> СТРЕМИМСЯ К ЛУЧШЕМУ.
ПОСТОЯННО СТРЕМИМСЯ К САМОУПРАВЛЕНИЮ.
@ By: CaixyPromise
@ Date: 2021-10-17
"""
import cv2
from HandTrackingModule import HandDetector
Теперь, когда вы запустите программу, она будет использовать вашу стандартную камеру компьютера. Когда вы покажете свою руку, программа выведет изображение, обводящее вашу руку, и нарисует основные суставы вашей руки.
Основные суставы вашей руки уже пронумерованы. Ваша рука состоит из 21 сустава, кончики пальцев имеют номера 4, 8, 12, 16 и 20.
Конкретные суставы включают:
После объяснения предыдущего раздела, мы завершили получение и распознавание рук, а также ввод распознаваемого содержимого. Теперь мы можем начать писать методы распознавания жестов. В этом разделе мы будем использовать метод fingersUp()
из нашего модуля распознавания рук.Найдите наш только что написанный файл Main.py (метод ввода содержимого). После того, как мы находим и рисуем положение наших рук, метод findPosition()
получает конкретное положение ваших рук. Переменная lmList
содержит положение суставов (тип: список), а переменная bbox
содержит положение рамки (тип: словарь). Когда содержимое не распознано, обе переменные пусты. Поэтому нам нужно написать код, который будет выполнять проверку пальцев, только когда массив содержит данные (не пуст).Как мы говорили выше, метод fingersUp()
возвращает массив длиной 5, начиная с большого пальца. Поднятые пальцы обозначаются значением 1, а опущенные — значением 0. Цель нашего проекта — создание распознавателя цифровых жестов, которые мы часто используем в повседневной жизни, а также жеста одобрения большим пальцем.
После базового распознавания, мы выводим результаты на экран. Для этого используем границы квадрата, определяемые bbox, и метод putText
из библиотеки OpenCV для отображения результатов распознавания.
Теперь, когда мы завершили распознавание жестов и вывод результатов, мы можем запустить полный код, чтобы проверить его работоспособность.
# -*- coding:utf-8 -*-
"""
КОД >>> С ТОЧКИ ЗРЕНИЯ CAIXYPROMISE.
СТРЕМИТЕСЬ К ВЫСШЕМУ КАЧЕСТВУ.
ПОСТОЯННО СТРЕМИТЕСЬ К САМОУПРАВЛЕНИЮ.
@ автор: caixy
@ дата: 2021-10-1
"""
import cv2
from HandTrackingModule import HandDetector
Результат сразу виден — компьютер успешно распознает ваши жесты и выводит результаты. Попробуйте сами!
Этот пост посвящен распознаванию жестов с использованием компьютерного зрения. Это моя первая статья на тему искусственного интеллекта и компьютерного зрения. В будущем мы будем продолжать публиковать статьи на эту тему. Если вы заметили ошибки или у вас есть вопросы, пожалуйста, оставьте свои комментарии, чтобы мы могли вместе учиться и улучшать свои навыки.Создание этого материала было непростой задачей. Если вам понравилась эта статья, не забудьте поставить лайк и подписаться на нас!
В следующей статье мы рассмотрим продвинутые методы распознавания жестов — динамические жесты. Мы опубликуем статью в нашем официальном WeChat-канале "01编程小屋". Не забудьте подписаться, чтобы не пропустить новую информацию!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )