У вас на самом деле есть две разные проблемы (хе).
- Во-первых, обнаружение рук
- Отслеживание рук после того, как вы их нашли.
1 Труднее двух.Сначала вы не знаете, где находятся руки, какого они цвета, как они расположены и насколько они велики.Как только вы их нашли, есть все виды ограничений, которые помогут вам найти их в последующих кадрах.Они не будут прыгать вокруг изображения, они останутся примерно одного цвета, они не станут внезапно очень большими или очень маленькими и т. Д. В зависимости от вашего варианта использования здесь есть несколько подходов:
- Вы могли бы потребовать, чтобы владелец рук некоторое время держал их открытыми ладонями к камере в начале видео, что позволяет определять их по цвету кожи и форме (пять пальцев)
- Вы можете искать участки цвета кожи на вашем изображении.Это накладывает некоторые ограничения на одежду ваших владельцев и требует, чтобы вы каким-то образом обнаружили голову или устранили ее в зависимости от положения.(для этого требуется больше предположений о положении владельца руки).
- Подход, основанный на модели, предполагает, что руки могут двигаться.Рука - это, в основном, капля определенного цвета, прикрепленная к палке (подмышке) шарниром (запястье).Просто комбинация рука-запястье-подмышка обеспечивает ограниченную, но слегка изменяющуюся форму, которую можно отслеживать.
OpenCV - это библиотека компьютерного зрения высокого уровня, которая поможет вам смного задач, необходимых для любого из этих подходов.Как только вы нашли руки goodFeaturesToTrack только в области рук, вы сможете отслеживать их.И некоторые функции из анализа движения и отслеживания объектов также помогут вам.
Обнаружение рук - более сложная проблема, как я уже говорил.Я не знаю много о модельных подходах.Если вы можете потребовать, чтобы владелец руки некоторое время держал руки перед камерой в начале кадра (и вы можете гарантировать, что руки останутся в кадре до конца видео), вы можете использовать Функция сопоставления с шаблоном на граничном изображении с изображением контура руки для поиска рук.
Что касается определения кожи, это пример кода , который можетпомочь вам, но для этого вам нужно создать скины / не скины.Просто поиск в Google «обнаружение скина opencv» также дает массу полезных ссылок.
Как видите, это довольно широкая тема.Надеюсь, это поможет вам начать.