В данной статье рассматривается процесс разработки приложения на языке Python для распознавания жестов, в частности дактильного алфавита языка жестов.
Для создания данного проекта были использованы библиотеки OpenCV и mediapipe. Код данного проекта размещен на GitHub.
Реализация проекта состоит из следующих основных этапов: сбор данных, создание и классификация набора данных (dataset), обучение модели (model) и тестирование полученной модели. Как видно это классические этапы машинного обучения.
Первый этап — это сбор данных для этого написан скрипт images_collect.py, ниже приведу код данного скрипта.
#...
DATA_DIR = './data'
if not os.path.exists(DATA_DIR):
os.makedirs(DATA_DIR)
number_of_classes = 3
dataset_size = 100
cap = cv2.VideoCapture(1)
for j in range(number_of_classes):
if not os.path.exists(os.path.join(DATA_DIR, str(j))):
os.makedirs(os.path.join(DATA_DIR, str(j)))
print('Начинаем сбор данных для класса {}'.format(j))
done = False
while True:
ret, frame = cap.read()
cv2.putText(frame, 'Please press "q" !', (100, 50), cv2.FONT_HERSHEY_SIMPLEX, 1.3, (255, 0, 0), 3,cv2.LINE_AA)
cv2.imshow('frame', frame)
if cv2.waitKey(25) == ord('q'):
break
counter = 0
while counter < dataset_size:
ret, frame = cap.read()
cv2.imshow('frame', frame)
cv2.waitKey(25)
cv2.imwrite(os.path.join(DATA_DIR, str(j), '{}.jpg'.format(counter)), frame)
counter += 1
cap.release()
cv2.destroyAllWindows()
Проверяем полученные изображения.
Далее пишем скрипт для обработки данных изображений (получаем dataset).
На основе полученных данных обучаем модель (т.е. создаем модель).
После получения выходного файла model.p, приступаем к финальному тестированию полученной модели.
Данный подход позволяет реализовать функционал распознавания символов жестового языка. Далее мы продолжим исследования в этой области.