Gerçek Zamanlı Parmak Sayma: MediaPipe ve OpenCV ile
Bu makalede, MediaPipe ve OpenCV kütüphanelerini kullanarak gerçek zamanlı parmak sayma uygulamasının nasıl geliştirileceğini adım adım açıklayacağız. Öncelikle, bu iki güçlü kütüphanenin ne işe yaradığını kısaca özetleyelim. MediaPipe, Google tarafından geliştirilen ve çeşitli bilgisayar görüşü görevleri için önceden eğitilmiş modeller sunan bir çerçevedir. OpenCV ise, görüntü işleme ve bilgisayar görüşü alanında yaygın olarak kullanılan kapsamlı bir kütüphanedir. Bu iki kütüphanenin birleşimiyle, etkin ve doğru bir parmak sayma sistemi oluşturabiliriz.
Uygulamanın temel mantığı: Sistem, öncelikle web kamerası veya video dosyasından alınan görüntülerde elleri tespit eder. Daha sonra, MediaPipe’in el izleme modeli, her parmağın pozisyonunu belirler. Son olarak, OpenCV ile bu pozisyon bilgilerini kullanarak parmak sayısını hesaplar ve ekranda görüntüler.
Gerekli Kütüphanelerin Kurulumu
Başlamadan önce, gerekli kütüphaneleri kurmanız gerekiyor. Bunu pip kullanarak yapabilirsiniz:
pip install mediapipe opencv-python
Kod Uygulaması
Aşağıda, Python dilinde yazılmış örnek bir kod bulunmaktadır. Bu kod, web kameranızdan görüntüler alır, elleri tespit eder ve parmak sayısını sayar:
import cv2
import mediapipe as mp
mp_drawing = mp.solutions.drawing_utils
mp_hands = mp.solutions.hands
cap = cv2.VideoCapture(0)
with mp_hands.Hands(static_image_mode=False, max_num_hands=2, min_detection_confidence=0.5) as hands:
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
results = hands.process(frame)
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
if results.multi_hand_landmarks:
for hand_landmarks in results.multi_hand_landmarks:
mp_drawing.draw_landmarks(frame, hand_landmarks, mp_hands.HAND_CONNECTIONS)
# Burada parmak sayısını hesaplama mantığı eklenebilir.
# Örneğin, belirli eklemlerin pozisyonlarını karşılaştırarak parmakların açık veya kapalı olup olmadığını tespit edebilirsiniz.
cv2.imshow('Parmak Sayma', frame)
if cv2.waitKey(10) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Bu kod, MediaPipe’in el tespit ve izleme özelliklerini kullanır. Ancak, parmak sayma kısmı yorum satırı içinde bırakılmıştır. Bu kısmı, parmak eklemlerinin koordinatlarını inceleyerek ve bir mantık uygulayarak kendiniz tamamlayabilirsiniz. Bu adım için, eklemlerin açılarını hesaplamak veya belirli eklemlerin pozisyonlarını karşılaştırarak parmakların açık veya kapalı olup olmadığını belirlemek gibi yöntemler kullanabilirsiniz. Daha detaylı bilgi için, MediaPipe ve OpenCV dokümanlarını inceleyebilirsiniz.
Sonuç
MediaPipe ve OpenCV kütüphanelerinin kullanımıyla, gerçek zamanlı ve nispeten doğru bir parmak sayma uygulaması geliştirmek mümkündür. Bu uygulama, oyunlar, insan-bilgisayar etkileşimi ve tıbbi uygulamalar gibi çeşitli alanlarda kullanılabilir. Bu makalede verilen temel kod örneği, sizlerin kendi ihtiyaçlarınıza göre özelleştirilerek geliştirilebilir.
Daha fazla bilgi ve proje örnekleri için fatihsoysal.com adresini ziyaret edebilirsiniz. Ayrıca, MediaPipe ve OpenCV dokümanlarına göz atmanızı şiddetle tavsiye ederim. Bu kütüphanelerin sunduğu diğer birçok özellik ve fonksiyon, gelecekteki projelerinizde size büyük kolaylık sağlayacaktır.
Başka sorularınız veya önerileriniz varsa lütfen yorumlarda belirtiniz.
#Etiketler: MediaPipe, OpenCV, Parmak Sayma, Gerçek Zamanlı, El Takibi, Bilgisayar Görüşü, Python, Uygulama Geliştirme, Fatih Soysal