Python Nesne Takibi

Python ile nesne takibi

Ara 12, 2024 - 18:52
Ara 18, 2024 - 23:43
 0  39
Python Nesne Takibi
Python Nesne Takibi
# pip install opencv-contrib-python (*)
# pip install opencv-python opencv-python-headless

import cv2

# Video kaynağını aç
video_path = "videos/gemi.mp4"  # Videonun yolunu buraya yazın
cap = cv2.VideoCapture(video_path)

# İlk kareyi al
ret, frame = cap.read()
if not ret:
    print("Video okunamadı!")
    exit()

# Kullanıcıdan nesneyi seçmesini iste
roi = cv2.selectROI("Nesne Seç", frame, fromCenter=False, showCrosshair=True)

# Seçilen ROI'yi takip etmek için OpenCV'nin KCF takip algoritmasını kullanıyoruz
tracker = cv2.legacy.TrackerKCF_create()  # KCF, CSRT, MOSSE gibi algoritmalar da kullanılabilir

# İlk kareyi takipçi ile başlat
tracker.init(frame, roi)

# Video hızını değiştirme (milisaniye cinsinden)
fps = cap.get(cv2.CAP_PROP_FPS)  # Videonun FPS (frames per second) değerini al
delay = int(1000 / fps)  # Normal hız için delay ayarı (ms cinsinden)
# Örneğin, videoyu 2 kat hızlı oynatmak için:
# delay = int(1000 / fps / 2)

while True:
    # Videodan bir sonraki kareyi al
    ret, frame = cap.read()
    if not ret:
        break

    # Nesneyi takip et
    ret, roi = tracker.update(frame)

    # Eğer takip başarılıysa, yeşil bir kutu çiz
    if ret:
        p1 = (int(roi[0]), int(roi[1]))
        p2 = (int(roi[0] + roi[2]), int(roi[1] + roi[3]))
        cv2.rectangle(frame, p1, p2, (0, 255, 0), 2)
    else:
        cv2.putText(frame, "Takip Başarısız", (100, 80), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)

    # Videoyu ekranda göster
    cv2.imshow("Nesne Takibi", frame)

    # 'q' tuşuna basıldığında çık
    if cv2.waitKey(delay) & 0xFF == ord('q'):  # delay ile hız ayarı
        break

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

Bu adımda, OpenCV'nin video işleme ve nesne takibi gibi işlevlerini kullanabilmemiz için gerekli olan kütüphaneleri yüklemiş olacağız.

Adım 1: Video Kaynağını Açmak

Kodumuza başlamadan önce, üzerinde işlem yapacağımız videoyu belirlememiz gerekiyor. OpenCV, video dosyasını açmamıza yardımcı olacak bir fonksiyon sunuyor. Bu fonksiyonla video kaynağını açıyoruz ve işlem yapmaya başlıyoruz. Videonun yolunu doğru şekilde belirttiğimizden emin olmalıyız.

Videoyu açtıktan sonra, ilk kareyi almak için cap.read() fonksiyonunu kullanıyoruz. Eğer video dosyası düzgün şekilde açılmazsa, bir hata mesajı gösterip işlemi sonlandırıyoruz.

Adım 2: Kullanıcının Nesne Seçmesi

Bir video üzerinde nesne takibi yapabilmek için, hangi nesnenin takip edileceğini seçmemiz gerekir. OpenCV, kullanıcının video üzerinde seçtiği bir alanı (Region of Interest - ROI) almak için pratik bir araç sunar. selectROI fonksiyonu ile kullanıcıdan, takip etmek istediği nesneyi seçmesi istenir. Bu işlem, videonun üzerinde bir dikdörtgen alan çizerek nesnenin seçilmesini sağlar. Seçilen bu alan, takip algoritması tarafından izlenecek olan nesne olarak kabul edilir.

Adım 3: Takipçi (Tracker) Oluşturmak

Nesne takibi için OpenCV’de birden fazla algoritma bulunmaktadır. Bu algoritmalar, videodaki nesnenin hareketini izleyerek onun etrafına bir çerçeve çizer. Burada biz, KCF (Kernelized Correlation Filters) algoritmasını kullanacağız. KCF, hızlı ve güvenilir sonuçlar veren bir algoritmadır, ancak ihtiyaca göre CSRT veya MOSSE gibi diğer algoritmalar da kullanılabilir.

Seçilen algoritma ile bir takipçi (tracker) oluşturulur ve nesne takibine başlamak için gerekli ayarlar yapılır.

Adım 4: Videoyu Çalıştırarak Nesne Takibini Gerçekleştirmek

Video kaynağını başarıyla açtıktan ve nesne takibi için gerekli algoritmayı seçtikten sonra, videonun her bir karesini işleyerek nesne takibini başlatıyoruz. Her yeni karede, takip algoritması nesnenin yeni pozisyonunu günceller. Bu işlem, video boyunca sürekli devam eder.

Eğer takip başarılıysa, nesnenin etrafına bir dikdörtgen çizilir. Eğer takip başarısız olursa, ekrana bir uyarı mesajı yazılır. Bu, kullanıcının takip sırasında bir problem olup olmadığını görmesini sağlar.

Adım 5: Video Karelerini Ekranda Gösterme

Takip edilen video, her bir kareyi ekranda görüntüleyecek şekilde ayarlanır. Bu şekilde, kullanıcı video üzerinde nesnenin nasıl takip edildiğini canlı bir şekilde görebilir. Ayrıca, kullanıcı istediği zaman 'q' tuşuna basarak videoyu durdurabilir.

Adım 6: Kaynakları Serbest Bırakmak

Video işleme ve nesne takibi tamamlandıktan sonra, kullanılan kaynakları serbest bırakmak önemlidir. Bu, programın düzgün bir şekilde kapanmasını sağlar. cv2.release() fonksiyonu, video kaynağını serbest bırakır ve cv2.destroyAllWindows() ise tüm OpenCV pencerelerini kapatır.

Sonuç

Bu adımları takip ederek, Python ve OpenCV kullanarak video üzerinde nesne takibi yapabiliriz. OpenCV’nin sunduğu güçlü araçlar sayesinde, videolardaki nesneleri kolayca izleyebilir ve bu tür projeleri farklı alanlarda kullanabiliriz. Bu yazıda, basit bir nesne takibi uygulaması geliştirdik, ancak bu yöntem daha karmaşık projelere de uygulanabilir. Nesne takibi, güvenlik, robotik ve sürücüsüz araçlar gibi birçok alanda hayati önem taşır ve bu tür projeler, bilgisayarla görme ve yapay zeka uygulamalarına harika bir giriş sağlar.

Bu Yazıya Tepkin Nedir?

like

dislike

love

funny

angry

sad

wow