Python Poz Modülü (Python Pose Module)

Python Poz Modülü (Python Pose Module)

Ara 3, 2023 - 22:21
Eki 17, 2024 - 01:08
 0  94
Python Poz Modülü (Python Pose Module)
Python poz modülü
from cvzone.PoseModule import PoseDetector
import cv2

# Webcam'i başlat ve uygun indeksi ayarla
cap = cv2.VideoCapture(0)  # İndeksi 0, 1 veya 2 olarak ayarlayabilirsiniz

# PoseDetector sınıfını başlat
detector = PoseDetector(staticMode=False,
                        modelComplexity=1,
                        smoothLandmarks=True,
                        enableSegmentation=False,
                        smoothSegmentation=True,
                        detectionCon=0.5,
                        trackCon=0.5)

# Sürekli çerçeve almak için döngü
while True:
    success, img = cap.read()

    # Görüntü başarıyla alındı mı kontrol et
    if not success:
        print("Görüntü alınamadı. Webcam'i kontrol edin.")
        break

    # Pozu bul
    img = detector.findPose(img)

    # İşaretçileri bul
    lmList, bboxInfo = detector.findPosition(img, draw=True, bboxWithHands=False)

    if lmList:
        center = bboxInfo["center"]
        cv2.circle(img, center, 5, (255, 0, 255), cv2.FILLED)

        # Mesafe ve açı hesapla
        length, img, info = detector.findDistance(lmList[11][0:2],
                                                  lmList[15][0:2],
                                                  img=img,
                                                  color=(255, 0, 0),
                                                  scale=10)
        angle, img = detector.findAngle(lmList[11][0:2],
                                        lmList[13][0:2],
                                        lmList[15][0:2],
                                        img=img,
                                        color=(0, 0, 255),
                                        scale=10)

        isCloseAngle50 = detector.angleCheck(myAngle=angle,
                                             targetAngle=50,
                                             offset=10)
        print(isCloseAngle50)

    cv2.imshow("Image", img)
    cv2.waitKey(1)

# Kaynakları serbest bırak
cap.release()
cv2.destroyAllWindows()

Kodun Açıklaması:

  1. Kütüphanelerin İçe Aktarılması:

    • from cvzone.PoseModule import PoseDetector: cvzone kütüphanesinin PoseModule kısmından PoseDetector sınıfını içe aktarır. Bu sınıf, insan pozlarını tespit etmek için kullanılır.
    • import cv2: OpenCV kütüphanesini içe aktarır, bu da görüntü işleme işlemleri için kullanılır.
  2. Webcam Bağlantısı:

    • cap = cv2.VideoCapture(0): Webcam’i açar. 0 genellikle birincil kamerayı temsil eder. Eğer başka bir kamera kullanıyorsanız, bu indeksi değiştirmeniz gerekebilir.
  3. PoseDetector Sınıfının Başlatılması:

    • detector = PoseDetector(...): PoseDetector sınıfını belirli parametrelerle başlatır:
      • staticMode: Pozun sabit olup olmadığını belirler.
      • modelComplexity: Modelin karmaşıklığı (daha yüksek değer, daha fazla detay).
      • smoothLandmarks: İşaretçilerin düzgünleştirilip düzeltilmeyeceğini ayarlar.
      • enableSegmentation: Segmentasyon özelliğini etkinleştirir veya devre dışı bırakır.
      • smoothSegmentation: Segmentasyonun düzgünleştirilip düzeltilmeyeceğini ayarlar.
      • detectionCon: Tespit güvenilirliği için eşik değeri.
      • trackCon: Takip güvenilirliği için eşik değeri.
  4. Sürekli Çerçeve Alma Döngüsü:

    • while True:: Sonsuz bir döngü başlatır. Bu döngü, webcam’den görüntü almayı ve işlemleri sürekli tekrarlar.
  5. Görüntü Alma ve Kontrol:

    • success, img = cap.read(): Webcam’den bir çerçeve alır. success, görüntünün başarıyla alınıp alınmadığını belirtir.
    • if not success:: Eğer görüntü alınamazsa, bir hata mesajı yazdırır ve döngüyü kırar.
  6. Poz Tespiti:

    • img = detector.findPose(img): Çerçevede insan pozunu bulur ve görüntüyü günceller.
  7. Vücut İşaretçilerini Bulma:

    • lmList, bboxInfo = detector.findPosition(img, draw=True, bboxWithHands=False): Vücut işaretçilerini bulur ve bunları görüntü üzerine çizer. lmList, işaretçilerin koordinatlarını tutar.
  8. İşaretçi Kontrolü ve Daire Çizimi:

    • if lmList:: Eğer işaretçiler tespit edildiyse, sınır kutusunun merkezi hesaplanır ve bu merkez üzerine bir daire çizilir.
  9. Mesafe ve Açı Hesaplama:

    • length, img, info = detector.findDistance(...): Belirtilen işaretçiler arasındaki mesafeyi hesaplar ve görüntüye çizer.
    • angle, img = detector.findAngle(...): Belirtilen işaretçiler arasındaki açıyı hesaplar ve görüntüye çizer.
  10. Açı Kontrolü:

    • isCloseAngle50 = detector.angleCheck(...): Hesaplanan açının 50 dereceye yakın olup olmadığını kontrol eder ve sonucu yazdırır.
  11. Görüntü Gösterimi:

    • cv2.imshow("Image", img): İşlenmiş çerçeveyi bir pencerede gösterir.
  12. Bekleme Süresi:

    • cv2.waitKey(1): Her bir çerçeve arasında 1 milisaniye bekler. Bu, görüntünün güncellenmesini sağlar.
  13. Kaynakların Serbest Bırakılması:

    • cap.release(): Webcam kaynağını serbest bırakır.
    • cv2.destroyAllWindows(): Tüm OpenCV pencerelerini kapatır.

Özet

Bu kod, webcam üzerinden insan pozlarını tespit eden, işaretçilerin konumlarını çizen ve belirli işaretçiler arasındaki mesafeleri ve açıları hesaplayan bir uygulama oluşturur. Kullanıcıya gerçek zamanlı olarak poz bilgisi ve görsel geri bildirim sunar.

Bu Yazıya Tepkin Nedir?

like

dislike

love

funny

angry

sad

wow