Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Käe jälgimine on protsess, mille käigus kasutatakse arvutinägemist, et tuvastada ja jälgida inimese käe liigutusi reaalajas. Käsijälgimise kõige domineerivam rakendus on virtuaalreaalsuse peakomplektides. Peakomplektid võimaldavad teil puutetundlike kontrollerite asemel sisendiks kasutada käsi. See omakorda muudab kogemuse kaasahaaravamaks.

Siit saate teada, kuidas Pythoni, OpenCV arvutinägemise jaoks ja MediaPipe'i abil jälgida inimese käsi.

Google töötas välja MediaPipe'i raamistiku, mis sisaldab palju masinõppelahendusi. Üheks lahenduseks on käe ja sõrme jälgimise lahendus nn MediaPipe'i käed. Käte jälgimiseks teostab MediaPipe Hands kahte protsessi: peopesa tuvastamine ja maamärkide tuvastamine.

Käe peopesa tuvastamine

MediaPipe alustab sisendpildil peopesade asukoha tuvastamisega. Kuna jäikade objektide piirdekastide hindamine on lihtsam kui liigendatud sõrmedega käte tuvastamine.

instagram viewer

Käsitsi maamärkide tuvastamine

Pärast peopesa tuvastamist tuvastab MediaPipe käsitsi orientiirid. Käsimaamärgi mudel suudab ennustada 21 täpset koordinaati iga maamärgi asukoha kohta.

Numbrid tähistavad iga maamärgi kordumatut identifikaatorit.

Oma keskkonna seadistamine

Selle projektiga jätkamiseks peaksite olema tuttav Pythoni põhitõed. Installige oma keskkonda järgmised teegid:

  • OpenCV: kasutate seda teeki arvuti nägemiseks ja sisendkujutise pilditöötlustehnikate tegemiseks.
  • MediaPipe: kasutate seda teeki käsitsi tuvastamiseks ja sisendpildi jälgimiseks.
  • imutils: selles teegis saate muuta sisendi videokaadri suurust.

OpenCV, MediaPipe'i ja imutilsi teekide installimiseks käivitage oma terminalis järgmine käsk. Installige pip – Pythoni paketihaldur- kui vaja. Veenduge, et edastaksite teegid tühikuga eraldatud loendina.

pip install OpenCV-Python MediaPipe imutils

Kui värskendus on lõppenud, on keskkond kodeerimise alustamiseks valmis.

Selle projekti täielik lähtekood on saadaval selles GitHubi hoidla.

Nõutavate teekide importimine

Peate installitud teegid importima, et saaksite neid kasutada. Avage mis tahes Python IDE, looge Pythoni fail ja lisage järgmised impordid:

importida cv2
importida mediapipe nagu mp
importida imutils

Importige kindlasti OpenCV cv2-na ja MediaPipe väiketähtedega. Kui seda ei tehta, kuvatakse veateade.

Kasutate mpHandsi MediaPipe'i kätelahenduse helistamiseks ja hands-objekti käsitsi sisendi tuvastamiseks ja jälgimiseks. Kasutate objekti mpDraw, et joonistada seosed tuvastatud käte orientiiride vahel.

mpHands = mp.lahendused.käed
käed = mpKäed. Käed ()
mpDraw = mp.solutions.drawing_utils

MediaPipe'i käte mudelit saate peenhäälestada, edastades Hands() konstruktorile erinevad parameetrid. Vaikeväärtused on selle projekti jaoks piisavalt head, kuid võite nendega katsetada, et näha, kuidas need mudelit mõjutavad:

Sa peaksid lahkuma staatiline_pildirežiim kui Väär, tagamaks, et mudel tuvastab käed enne, kui hakkab neid jälgima. See kordab jälgimisprotsessi ainult siis, kui tuvastamise usaldus langeb deklareeritud parameetrist madalamale, muutes üldise sisendi töötlemise kiiremaks.

Käte jälgimise teostamine

Käsitsi jälgimiseks vajate kolme funktsiooni: ühte sisendi töötlemiseks, ühte käsitsi orientiiride ühenduste loomiseks ja põhifunktsiooni programmivoo juhtimiseks.

Sisendite töötlemise funktsioon

See funktsioon võtab sisendi, teisendab selle halltooniks ja edastab selle MediaPipe'i kätemudelile, et tuvastada ja jälgida sisendis olevaid osuteid.

# Sisendpildi töötlemine
defprotsessi_pilt(img):
# Sisend teisendamine halltooniks
gray_image = cv2.cvtColor (img, cv2.COLOR_BGR2RGB)
tulemused = käed.protsess (gray_image)

# Tuvastatud käte tagastamine helistamisfunktsioonile
tagasi tulemused

Funktsioon tagastab tulemused selle kohta, kas sisendil on tuvastatud käsi.

Käsitsi maamärgi ühenduste joonistamise funktsioon

See funktsioon kontrollib, kas sisendi töötlemise funktsioon tuvastas käed. Kui tuvastatakse käed, teeb see silmuse üle iga orientiiri ja tõmbab selle ümber ringi, jälgides orientiiri Pythoni loendusfunktsioon. Seejärel loob see ühendused algse videosisendi orientiiride vahel.

# Maamärkide ühenduste joonistamine
defjoonista_käsi_ühendusi(pilt, tulemused):
kui results.multi_hand_landmarks:
jaoks handLms sisse results.multi_hand_landmarks:
jaoks id, lm sisse loetlema (handLms.landmark):
h, w, c = img.shape

# Iga maamärgi koordinaatide leidmine
cx, cy = int (lm.x * w), int (lm.y * h)

# Iga maamärgi ID ja koordinaatide printimine
# terminalis
print (id, cx, cy)

# Iga maamärgi ümber ringi loomine
cv2.circle (img, (cx, cy), 10, (0, 255, 0),
cv2.FILLED)
# Maamärkide ühenduste joonistamine
mpDraw.draw_landmarks (img, handLms,
mpHands. HAND_CONNECTIONS)

tagasi img

Funktsioon algab igale orientiirile ringlemisega:

Seejärel joonistab see käsiühendused:

Lõpuks tagastab see oma väljundi kutsumisfunktsioonile.

Peamine funktsioon

Looge põhifunktsioon, mis juhib teie programmi voogu. Väljundi järjepidevuse tagamiseks võtab see sisendi ja muudab videokaadri suurust. Edastage sisend töötlemisfunktsioonile, mis seejärel tuvastab ja jälgib käed. Viige tagastatud tulemused käsitsi maamärkide ühenduse joonistamise funktsiooni, mis loob ühenduse algsele videosisendile. Lõpuks kuvab see kasutajale väljundi.

defpeamine():
# Asendage 0 videoteega, et kasutada a
# eelsalvestatud video
cap = cv2.VideoCapture(0)

samal ajalTõsi:
# Sisestuse võtmine
edu, pilt = cap.read()
pilt = imutils.resize (pilt, laius=500, kõrgus =500)
tulemused = protsessi_pilt (pilt)
draw_hand_connections (pilt, tulemused)

# Väljundi kuvamine
cv2.imshow("Käe jälgija", pilt)

# Programm lõpeb, kui vajutada klahvi q
kui cv2.waitKey(1) == tellimus('q'):
cap.release()
cv2.destroyAllWindows()

Viimane samm on teie programmi käivitamine. Allolev kood tagab, et programmi käivitamisel käivitub esmalt põhifunktsioon.

kui __nimi__ == "__main__":
peamine ()

Kui programm töötab, toodab see väljundit järgmiselt:

Programm jälgib käsi reaalajas.

Käsitsi jälgimine kaasahaarava virtuaalreaalsuse jaoks

Käsitsi jälgimine virtuaalses reaalsuses muudab tehnoloogia ahvatlevamaks. Virtuaalreaalsuse peakomplektid on hakanud juurutama käsitsi jälgimist, tuues virtuaalmaailma kõrgendatud reaalsuse tunde. Peakomplektid võimaldavad kasutajal virtuaalse käe abil käske sisestada.

Virtuaalsete peakomplektide käsitsi jälgimine on selle tehnoloogia vaid üks rakendus. Saate lisada käsitsi jälgimise mis tahes sobivasse piirkonda, mis teile meeldib.