Читаоци попут вас помажу у подршци МУО. Када обавите куповину користећи везе на нашем сајту, можда ћемо зарадити провизију за партнере. Опширније.

Праћење руку је процес коришћења компјутерског вида за откривање и праћење покрета руке особе у реалном времену. Најдоминантнија примена праћења руку је у слушалицама виртуелне реалности. Слушалице вам омогућавају да користите руке као улаз уместо контролера на додир. Ово заузврат чини искуство још интензивнијим.

Сазнајте како да пратите руке особе користећи Питхон, ОпенЦВ за компјутерски вид и МедиаПипе.

Гоогле је развио МедиаПипе оквир, који садржи многа решења за машинско учење. Једно од решења је решење за праћење руку и прстију тзв МедиаПипе Хандс. За праћење руку, МедиаПипе Хандс обавља два процеса: детекцију длана и детекцију оријентира.

Детекција длана руке

МедиаПипе почиње тако што идентификује где се налазе дланови на улазној слици. Пошто је процена граничних оквира за круте објекте једноставнија од идентификације руку са спојеним прстима.

Детекција ручних оријентира

Након детекције длана, МедиаПипе врши детекцију ручних оријентира. Модел ручне оријентире може предвидети 21 прецизну координату локације сваког оријентира на руци.

Бројеви представљају јединствени идентификатор за сваки оријентир.

Подешавање вашег окружења

Да бисте пратили овај пројекат, требало би да будете упознати са основе Пајтона. Инсталирајте следеће библиотеке у свом окружењу:

  • ОпенЦВ: Користићете ову библиотеку за компјутерски вид и за извођење техника обраде слике на улазној слици.
  • МедиаПипе: Користићете ову библиотеку да извршите детекцију руку и праћење на улазној слици.
  • имутилс: Ову библиотеку ћете променити да бисте променили величину видео оквира улаза.

Покрените следећу команду на свом терминалу да бисте инсталирали ОпенЦВ, МедиаПипе и имутилс библиотеке. Инсталирај пип—Питхон менаџер пакета— ако треба. Обавезно проследите библиотеке као листу раздвојену размаком.

пип инсталл ОпенЦВ-Питхон МедиаПипе имутилс

Када се ажурирање заврши, окружење је спремно за почетак кодирања.

Комплетан изворни код за овај пројекат доступан је у његовом ГитХуб спремиште.

Увоз потребних библиотека

Мораћете да увезете библиотеке које сте инсталирали да бисте могли да их користите. Отвори било који Питхон ИДЕ, креирајте Питхон датотеку и додајте следеће увозе:

увоз цв2
увоз медиапипе као мп
увоз имутилс

Уверите се да увезете ОпенЦВ као цв2 и МедиаПипе малим словима. Ако то не урадите, појавиће се грешка.

Користићете мпХандс да позовете МедиаПипе решење за руке, а руке објект за откривање и праћење уноса руком. Користићете објекат мпДрав да нацртате везе између обележја идентификованих руку.

мпХандс = мп.солутионс.хандс
руке = мпХандс. руке()
мпДрав = мп.солутионс.дравинг_утилс

Можете фино подесити МедиаПипе модел руку тако што ћете проследити различите параметре Хандс() конструктору. Подразумеване вредности су довољно добре за овај пројекат, али можете експериментисати са њима да видите како утичу на модел:

Требало би да напустиш статиц_имаге_моде као Фалсе да би се осигурало да модел детектује руке једном пре него што почне да их прати. Понавља процес праћења само ако поузданост детекције падне нижа од декларисаног параметра, чинећи укупну обраду уноса бржом.

Извођење праћења руку

Потребне су вам три функције за обављање праћења руку: једна за обраду уноса, једна за цртање веза са оријентирима руке и главна функција за контролу тока програма.

Функција обраде улаза

Ова функција узима улаз, конвертује га у нијансе сиве и прослеђује га МедиаПипе моделу руку да детектује и прати руке у улазу.

# Обрада улазне слике
дефслика_процеса(имг):
# Претварање улаза у нијансе сиве
граи_имаге = цв2.цвтЦолор (имг, цв2.ЦОЛОР_БГР2РГБ)
резултати = руке.процес (сива_слика)

# Враћање откривених руку у функцију позивања
повратак резултате

Функција враћа резултате о томе да ли је било откривених руку на улазу.

Функција цртања веза за ручне оријентире

Ова функција проверава да ли је функција обраде улаза открила било какве руке. Ако постоје откривене руке, он прелази преко сваког оријентира и црта круг око њега, пратећи оријентир користећи Пајтонова функција набрајања. Затим црта везе између оријентира на оригиналном видео улазу.

# Цртање веза са оријентирима
дефдрав_ханд_цоннецтионс(имг, резултати):
ако ресултс.мулти_ханд_ландмаркс:
за хандЛмс ин ресултс.мулти_ханд_ландмаркс:
за ид, лм ин наброји (хандЛмс.оријентир):
х, в, ц = имг.облик

# Проналажење координата сваког оријентира
цк, ци = инт (лм.к * в), инт (лм.и * х)

# Штампање сваког ИД-а и координата оријентира
# на терминалу
штампа (ид, цк, ци)

# Прављење круга око сваког оријентира
цв2.цирцле (имг, (цк, ци), 10, (0, 255, 0),
цв2.ФИЛЛЕД)
# Цртање веза са оријентирима
мпДрав.драв_ландмаркс (имг, хандЛмс,
мпХандс. ХАНД_ЦОННЕЦТИОНС)

повратак имг

Функција почиње заокруживањем сваког оријентира:

Затим црта ручне везе:

Коначно враћа свој излаз функцији која позива.

Главна функција

Направите главну функцију која ће контролисати ток вашег програма. Биће потребан улаз и промена величине видео оквира да би се обезбедила конзистентност излаза. Проследите улаз функцији обраде која ће затим открити и пратити руке. Однесите враћене резултате у функцију цртања везе ручних оријентира која ће нацртати везу на оригиналном видео улазу. Коначно ће приказати резултат кориснику.

дефглавни():
# Замените 0 видео путањом да бисте користили а
# унапред снимљен видео
цап = цв2.ВидеоЦаптуре(0)

докИстина:
# Узимање уноса
успех, слика = цап.реад()
слика = имутилс.ресизе (слика, ширина=500, висина=500)
резултати = слика_процеса (слика)
драв_ханд_цоннецтионс (слика, резултати)

# Приказ излаза
цв2.имсхов("Трактор за руке", слика)

# Програм се прекида када се притисне тастер к
ако цв2.ваитКеи(1) == орд('к'):
цап.релеасе()
цв2.дестроиАллВиндовс()

Последњи корак је покретање вашег програма. Код у наставку осигурава да када покренете програм, главна функција се прво покреће.

ако __наме__ == "__главни__":
главни()

Када се програм покрене, производи излаз овако:

Програм прати руке у реалном времену.

Праћење руку за импресивну виртуелну стварност

Праћење руку у виртуелној стварности чини технологију привлачнијом. Слушалице за виртуелну стварност почеле су да уводе праћење руку, доносећи осећај повећане стварности у виртуелни свет. Слушалице омогућавају кориснику да уноси команде користећи виртуелну руку.

Праћење руку у виртуелним слушалицама је само једна од примена ове технологије. Можете да укључите праћење руку у било коју применљиву област по вашем укусу.