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