OpenCV Kütüphanesi ile El – Parmak Hareketlerini Tanıma

Python Python - Örnekler Python - Projeler Yazılım

Kodlar

import cv2
import mediapipe as mp

def fnkKontrol(parmaklar):
    parmakSirasi=""
    for i in range(0,len(parmaklar)):
       parmakSirasi= parmakSirasi + str(parmaklar[i])

    # Parmak sırası => başparmak, işaret parmağı, orta parmak, yüzük parmağı, serçe parmak
    if(parmakSirasi=="00000"):   return (0)
    elif(parmakSirasi=="01000"): return(1)
    elif(parmakSirasi=="01100"): return(2) 
    elif(parmakSirasi=="01110"): return(3)
    elif(parmakSirasi=="01111"): return(4)
    elif(parmakSirasi=="11111"): return(5) 
    elif(parmakSirasi=="10000"): return(6)
    elif(parmakSirasi=="11000"): return(7) 
    elif(parmakSirasi=="11100"): return(8)    
    elif(parmakSirasi=="11110"): return(9) 
    elif(parmakSirasi=="10001"): return(10) 
    elif(parmakSirasi=="01001"): return(11)    
    else: return(-1)  
 
kameraGenislik,kameraYukseklik=640,480
kamera=cv2.VideoCapture(0)
kamera.set(3,kameraGenislik)
kamera.set(4,kameraYukseklik)
 
mpHands = mp.solutions.hands
hands = mpHands.Hands()
mpDraw = mp.solutions.drawing_utils

while True:
    success, img=kamera.read()
    imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    sonuc = hands.process(imgRGB)
 
    if sonuc.multi_hand_landmarks:
        for handLms in sonuc.multi_hand_landmarks:
            mpDraw.draw_landmarks(img, handLms, mpHands.HAND_CONNECTIONS)

    liste = []
    if sonuc.multi_hand_landmarks:
        elim = sonuc.multi_hand_landmarks[0]
        for id, lm in enumerate(elim.landmark):
                y, g, c = img.shape
                xx, yy = int(lm.x * g), int(lm.y * y)
                liste.append([id, xx, yy])

    tipId=[4,8,12,16,20]
    if(len(liste)!=0):
        parmaklar=[]
        # Başparmak
        if(liste[tipId[0]][1]>liste[tipId[0]-1][1]):
                parmaklar.append(1)
        else :
                parmaklar.append(0)
        # Diğer parmaklar
        for id in range(1,len(tipId)):
            if(liste[tipId[id]][2]<liste[tipId[id]-2][2]):
                parmaklar.append(1)
            else :
                parmaklar.append(0)
        
        cv2.rectangle(img,(0,420),(640,480),(0,0,125),cv2.FILLED)   
        if(fnkKontrol(parmaklar) == -1):
            cv2.putText(img,"Parmak tanimli degil.",(45,450),cv2.FONT_HERSHEY_PLAIN, 2,(255,255,255),2)
        elif(fnkKontrol(parmaklar) == 11):
            cv2.putText(img,"Turk",(45,450),cv2.FONT_HERSHEY_PLAIN, 2,(255,255,255),2)
        else:
            cv2.putText(img,str(fnkKontrol(parmaklar)),(300,465),cv2.FONT_HERSHEY_PLAIN, 4,(255,255,255),2)  
        
    cv2.imshow("image",img)
    if(cv2.waitKey(1) & 0xFF== ord('q')):
        break

OpenCV Kütüphanesi Yükleme Kodu : pip install opencv-python

Mediapipe Kütüphanesi Yükleme Kodu : pip install mediapipe

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir