Käsien seuranta on prosessi, jossa tietokonenäön avulla havaitaan ja seurataan henkilön käden liikkeitä reaaliajassa. Käsiseurannan hallitsevin sovellus on virtuaalitodellisuuskuulokkeet. Kuulokkeiden avulla voit käyttää käsiäsi kosketusohjaimien sijaan. Tämä puolestaan tekee kokemuksesta mukaansatempaavamman.
Ota selvää, kuinka voit seurata henkilön käsiä Pythonilla, OpenCV: llä tietokonenäön ja MediaPipen avulla.
Google kehitti MediaPipe-kehyksen, joka sisältää monia koneoppimisratkaisuja. Yksi ratkaisuista on käden ja sormen seurantaratkaisu nimeltä MediaPipe Kädet. Käsien seuraamiseksi MediaPipe Hands suorittaa kaksi prosessia: kämmentunnistuksen ja maamerkkien havaitsemisen.
Käden kämmenen tunnistus
MediaPipe aloittaa tunnistamalla, missä kämmenet ovat syöttökuvassa. Koska jäykkien esineiden rajapintojen arvioiminen on yksinkertaisempaa kuin käsien tunnistaminen nivelletyillä sormilla.
Käsin maamerkkien tunnistus
Kämmentunnistuksen jälkeen MediaPipe havaitsee käsin maamerkit. Käsimaamerkkimalli voi ennustaa 21 tarkkaa koordinaattia kunkin käsimaamerkin sijainnista.
Numerot edustavat kunkin maamerkin yksilöllistä tunnistetta.
Ympäristösi luominen
Jotta voit seurata tätä projektia, sinun tulee olla perehtynyt Pythonin perusteet. Asenna seuraavat kirjastot ympäristöösi:
- OpenCV: Käytät tätä kirjastoa tietokonenäköön ja kuvankäsittelytekniikoiden suorittamiseen syötekuvalle.
- MediaPipe: Käytät tätä kirjastoa käsintunnistukseen ja syöttökuvan seurantaan.
- imutils: Tämä kirjasto muuttaa tulon videokehyksen kokoa.
Asenna OpenCV-, MediaPipe- ja imutils-kirjastot suorittamalla seuraava komento päätteessäsi. Asenna pip – Python-paketinhallinta-jos sinun täytyy. Varmista, että välität kirjastot välilyönnillä eroteltuna luettelona.
pip asennus OpenCV-Python MediaPipe imutils
Kun päivitys on valmis, ympäristö on valmis aloittamaan koodauksen.
Tämän projektin koko lähdekoodi on saatavilla sen GitHub-arkisto.
Vaadittujen kirjastojen tuonti
Sinun on tuotava asentamasi kirjastot, jotta voit käyttää niitä. Avaa mikä tahansa Python IDE, luo Python-tiedosto ja lisää seuraavat tuonnit:
tuonti cv2
tuonti mediapipe kuten sp
tuonti imutils
Varmista, että tuot OpenCV: n cv2-muodossa ja MediaPipen pienillä kirjaimilla. Jos näin ei tehdä, tulee virheilmoitus.
Käytät mpHandsia kutsuaksesi MediaPipe-käsiratkaisua, ja hands-objekti havaitsee ja seuraa käsisyöttöä. Piirrät yhteydet tunnistettujen käsien maamerkkien välille mpDraw-objektin avulla.
mpHands = mp.solutions.hands
kädet = mpKädet. Kädet ()
mpDraw = mp.solutions.drawing_utils
Voit hienosäätää MediaPipe-käsimallia välittämällä erilaisia parametreja Hands()-konstruktorille. Oletusarvot ovat tarpeeksi hyviä tälle projektille, mutta voit kokeilla niitä nähdäksesi kuinka ne vaikuttavat malliin:
Sinun pitäisi jättää static_image_mode arvoksi False varmistaakseen, että malli havaitsee kädet kerran ennen kuin se alkaa jäljittää niitä. Se toistaa seurantaprosessin vain, jos havaitsemisluottamus laskee ilmoitettua parametria pienemmäksi, mikä tekee syötteiden kokonaiskäsittelystä nopeampaa.
Käsien seurannan suorittaminen
Tarvitset kolme toimintoa käsiseurannan suorittamiseen: yksi syötteen käsittelemiseen, yksi käsin maamerkkiyhteyksien piirtämiseen ja päätoiminto ohjelman kulun ohjaamiseen.
Syöttöjen käsittelytoiminto
Tämä toiminto ottaa syötteen, muuntaa sen harmaasävyiksi ja välittää sen MediaPipe-käsimalliin, joka havaitsee ja seuraa syötteen kädet.
# Käsitellään syötettyä kuvaa
defprosessi_kuva(kuva):
# Muunnetaan syöte harmaasävyiksi
gray_image = cv2.cvtColor (img, cv2.COLOR_BGR2RGB)
tulokset = kädet.prosessi (harmaa_kuva)
# Havaittujen käsien palauttaminen kutsutoimintoon
palata tuloksia
Funktio palauttaa tulokset siitä, onko syötteessä havaittu käsiä.
Käsin maamerkkiliitäntöjen piirustustoiminto
Tämä toiminto tarkistaa, onko syötteen käsittelytoiminto havainnut käsiä. Jos havaitaan käsiä, se kiertää jokaisen maamerkin yli ja piirtää sen ympärille ympyrän pitäen kirjaa maamerkistä käyttämällä Pythonin numerate-funktio. Sitten se piirtää yhteydet alkuperäisen videotulon maamerkkien välille.
# Maamerkkiyhteyksien piirtäminen
defdraw_hand_connections(kuva, tulokset):
jos results.multi_hand_landmarks:
varten handLms sisään results.multi_hand_landmarks:
varten id, lm sisään luetella (handLms.landmark):
h, w, c = img.shape# Jokaisen maamerkin koordinaattien löytäminen
cx, cy = int (lm.x * w), int (lm.y * h)# Jokaisen maamerkin tunnuksen ja koordinaattien tulostaminen
# terminaalissa
tulosta (id, cx, cy)# Ympyrän luominen kunkin maamerkin ympärille
cv2.circle (img, (cx, cy), 10, (0, 255, 0),
cv2.FILLED)
# Maamerkkiyhteyksien piirtäminen
mpDraw.draw_landmarks (img, handLms,
mpHands. HAND_CONNECTIONS)
palata img
Toiminto alkaa kiertämällä jokainen maamerkki:
Sitten se piirtää käsiliitännät:
Lopulta se palauttaa ulostulonsa kutsuvaan funktioon.
Päätoiminto
Luo päätoiminto, joka ohjaa ohjelman kulkua. Se ottaa sisääntulon ja muuttaa videokehyksen kokoa varmistaakseen lähdön johdonmukaisuuden. Siirrä syöte käsittelytoimintoon, joka sitten tunnistaa ja seuraa kädet. Vie palautetut tulokset käsin maamerkkien yhteyspiirtotoimintoon, joka piirtää yhteyden alkuperäiseen videotuloon. Lopulta se näyttää tulosteen käyttäjälle.
defpää():
# Korvaa 0 videopolulla käyttääksesi a
# valmiiksi tallennettu video
cap = cv2.VideoCapture(0)sillä aikaaTotta:
# Ottaa syötteen
menestys, kuva = cap.read()
kuva = imutils.resize (kuva, leveys=500, korkeus =500)
tulokset = prosessikuva (kuva)
draw_hand_connections (kuva, tulokset)# Tuotoksen näyttäminen
cv2.imshow("Käsijäljitin", kuva)
# Ohjelma päättyy, kun q-näppäintä painetaan
jos cv2.waitKey(1) == ord('q'):
cap.release()
cv2.destroyAllWindows()
Viimeinen vaihe on ohjelman suorittaminen. Alla oleva koodi varmistaa, että kun suoritat ohjelman, päätoiminto suoritetaan ensin.
jos __nimi__ == "__main__":
pää()
Kun ohjelma suoritetaan, se tuottaa seuraavanlaisen tulosteen:
Ohjelma seuraa käsiä reaaliajassa.
Käsien seuranta mukaansatempaavaan virtuaalitodellisuuteen
Käsien seuranta virtuaalitodellisuudessa tekee tekniikasta houkuttelevamman. Virtuaalitodellisuuskuulokkeet ovat alkaneet ottaa käyttöön käsiseurantaa, tuoden kohonneen todellisuuden tunteen virtuaalimaailmaan. Kuulokkeiden avulla käyttäjä voi syöttää komentoja virtuaalisella kädellä.
Käsien seuranta virtuaalisissa kuulokkeissa on vain yksi tämän tekniikan sovellus. Voit sisällyttää käsiseurannan haluamallesi alueelle.