Python El İzleme Modülü (Python Hand Tracking)
Python El İzleme Modülü (Python Hand Tracking)

from cvzone.HandTrackingModule import HandDetector
import cv2
# Video yakalamak için webcam'i başlat
# '2', bilgisayarınıza bağlı üçüncü kamerayı belirtir; '0' genellikle yerleşik kamerayı ifade eder
cap = cv2.VideoCapture(0)
# Belirtilen parametrelerle HandDetector sınıfını başlat
detector = HandDetector(staticMode=False, maxHands=2, modelComplexity=1, detectionCon=0.5, minTrackCon=0.5)
# Webcam'den sürekli olarak kare al
while True:
# Webcam'den her kareyi yakala
# 'success', kare başarıyla yakalanırsa True olur, 'img' ise kareyi içerir
success, img = cap.read()
# Mevcut karede elleri bul
# 'draw' parametresi, görüntü üzerinde işaret noktalarını ve el hatlarını çizer
# 'flipType' parametresi, görüntüyü ters çevirerek bazı tespitleri kolaylaştırır
hands, img = detector.findHands(img, draw=True, flipType=True)
# Herhangi bir el tespit edilip edilmediğini kontrol et
if hands:
# Tespit edilen ilk el için bilgi
hand1 = hands[0] # İlk tespit edilen eli al
lmList1 = hand1["lmList"] # İlk elin 21 işaret noktasının listesi
bbox1 = hand1["bbox"] # İlk elin etrafındaki sınırlayıcı kutu (x,y,w,h koordinatları)
center1 = hand1['center'] # İlk elin merkez koordinatları
handType1 = hand1["type"] # İlk elin türü ("Sol" veya "Sağ")
# İlk el için yukarıda olan parmak sayısını say
fingers1 = detector.fingersUp(hand1)
print(f'H1 = {fingers1.count(1)}', end=" ") # Yukarıda olan parmak sayısını yazdır
# İlk elin belirli işaret noktaları arasındaki mesafeyi hesapla ve görüntüye çiz
length, info, img = detector.findDistance(lmList1[8][0:2], lmList1[12][0:2], img, color=(255, 0, 255),
scale=10)
# İkinci elin tespit edilip edilmediğini kontrol et
if len(hands) == 2:
# İkinci el için bilgi
hand2 = hands[1]
lmList2 = hand2["lmList"]
bbox2 = hand2["bbox"]
center2 = hand2['center']
handType2 = hand2["type"]
# İkinci el için yukarıda olan parmak sayısını say
fingers2 = detector.fingersUp(hand2)
print(f'H2 = {fingers2.count(1)}', end=" ")
# Her iki elin işaret parmakları arasındaki mesafeyi hesapla ve görüntüye çiz
length, info, img = detector.findDistance(lmList1[8][0:2], lmList2[8][0:2], img, color=(255, 0, 0),
scale=10)
print(" ") # Yazdırılan çıktının okunabilirliği için yeni satır
# Görüntüyü bir pencerede görüntüle
cv2.imshow("Görüntü", img)
# Pencereyi açık tut ve her kare için güncelle; kareler arasında 1 milisaniye bekle
cv2.waitKey(1)
Kodun Açıklaması:
-
Modül İçe Aktarımı:
cvzone
kütüphanesindenHandDetector
sınıfı ve OpenCV'nincv2
modülü içe aktarılır.HandDetector
, elle izleme işlevselliği sağlar. -
Video Yakalama: Webcam'den video akışı başlatılır.
cv2.VideoCapture(2)
ile üçüncü kamera açılır.0
ile yerleşik kamera açılabilir. -
HandDetector Sınıfı:
HandDetector
sınıfı, ellerin tespiti için belirli parametrelerle başlatılır.staticMode
elle tespit modunu belirler,maxHands
maksimum tespit edilecek el sayısını belirler,detectionCon
veminTrackCon
ise tespit ve takip güvenilirlik değerlerini ayarlar. -
Sonsuz Döngü: Sonsuz bir döngü içinde webcam'den kareler alınır:
- Her kare yakalanır ve
success
değişkeni, yakalamanın başarılı olup olmadığını belirtir. findHands
yöntemi ile mevcut karede eller tespit edilir ve görüntü üzerinde işaret noktaları çizilir.
- Her kare yakalanır ve
-
Ellerin Analizi:
- Eğer bir veya iki el tespit edilirse, ilk elin bilgileri alınır (işaret noktaları, sınırlayıcı kutu, merkez noktası, el türü).
- İlk elin yukarıda olan parmak sayısı sayılır ve konsola yazdırılır.
- İlk elin belirli işaret noktaları (örneğin, baş parmak ve işaret parmağı) arasındaki mesafe hesaplanır.
-
İkinci Elin Kontrolü: Eğer ikinci bir el tespit edilirse, benzer bilgiler ikinci el için alınır ve yukarıda olan parmak sayısı yazdırılır. Her iki elin işaret parmakları arasındaki mesafe de hesaplanır.
-
Görüntü Gösterimi: Tüm işlemler tamamlandıktan sonra görüntü bir pencerede gösterilir.
cv2.waitKey(1)
ile her kare arasında 1 milisaniye beklenir.
Bu kod, webcam üzerinden gerçek zamanlı olarak elleri tespit eder, parmak sayısını hesaplar ve belirli noktalar arasındaki mesafeleri gösterir.
Bu Yazıya Tepkin Nedir?






