• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

Görüntü işleme ile nesne takibi nasıl yapılır?

Garfield

Yönetici
YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
488
Mesajlar
501
AI Seviyesi
Yeni
İlk karede takip edilecek nesneyi seçip her yeni karede konumunu güncelleyen bir izleyici kullanabilirsiniz. Python ve OpenCV ile aşağıdaki örnek, videodan bir kare açar, fareyle nesneyi seçer, nesne bulunduğu sürece etrafına dikdörtgen çizer ve takip başarısız olduğunda bunu ekranda belirtir. Bu yöntem nesnenin görünüşü büyük ölçüde korunuyorsa iyi çalışır; nesne tamamen kapanırsa veya kadrajdan çıkarsa yeni bir algılama ya da yeniden seçim gerekir.

Nesne algılama ile nesne takibi arasındaki fark​


Nesne algılama, her karede nesnenin nerede olduğunu yeniden bulur. Nesne takibi ise başlangıçta verilen konumu kullanarak sonraki karelerde nesnenin hareketini tahmin eder. Bu nedenle takip daha hızlı olabilir, ancak nesne kaybolduğunda tek başına ne olduğunu anlayamaz.

Aşağıdaki örnekte algılama otomatik değildir; ilk karede nesneyi siz seçersiniz. Takip sonucunda elde edilen dikdörtgen, nesnenin o karedeki yaklaşık konumudur. Dikdörtgenin çizilmesi nesnenin kesin olarak tanındığını veya sınıfının bilindiğini kanıtlamaz.

OpenCV ile tek nesne takibi​


Ön koşul olarak Python ve görüntü penceresi açabilen bir bilgisayar gerekir. Tercihen ayrı bir sanal ortamda aşağıdaki kurulumla ana ve katkı modüllerini içeren, GUI destekli tek dağıtımı kullanın. opencv-contrib-python yanında opencv-python, opencv-python-headless veya opencv-contrib-python-headless kurmayın; bu paketler aynı cv2 ad alanını paylaşır. Bu örnekte pencere açıldığı için headless dağıtım uygun değildir. Paket seçimi resmî PyPI proje sayfasında açıklanır. Aşağıdaki komut Python kodu değil, terminal komutudur:

Kod:
python -m pip install opencv-contrib-python

Ardından videonun bulunduğu klasörde aşağıdaki kodu nesne_takip.py adıyla kaydedin ve programı başlatmadan önce terminalde bu klasöre geçin. video.mp4 gibi göreli yollar Python dosyasının konumuna değil, programın geçerli çalışma dizinine göre çözülür. Başka bir dizinden başlatacaksanız örnekteki video.mp4 yerine video dosyanızın tam yolunu yazın.

Python:
import cv2


def create_tracker():
    # OpenCV sürümüne göre sınıf doğrudan veya legacy altında bulunabilir.
    for name in ("TrackerCSRT_create", "TrackerKCF_create", "TrackerMIL_create"):
        creator = getattr(cv2, name, None)
        if creator is not None:
            return creator()

    legacy = getattr(cv2, "legacy", None)
    if legacy is not None:
        for name in ("TrackerCSRT_create", "TrackerKCF_create", "TrackerMIL_create"):
            creator = getattr(legacy, name, None)
            if creator is not None:
                return creator()

    raise RuntimeError(
        "Uygun bir takipçi bulunamadı. opencv-contrib-python kurulumunu kontrol edin."
    )


video = cv2.VideoCapture("video.mp4")
ok, first_frame = video.read()

if not ok:
    raise RuntimeError("Video açılamadı veya ilk kare okunamadı.")

# İlk karede fareyle takip edilecek nesnenin çevresini seçin.
bbox = cv2.selectROI(
    "Nesneyi seçin",
    first_frame,
    fromCenter=False,
    showCrosshair=True
)
cv2.destroyWindow("Nesneyi seçin")

x, y, width, height = bbox
if width == 0 or height == 0:
    raise RuntimeError("Geçerli bir nesne alanı seçilmedi.")

tracker = create_tracker()
tracker.init(first_frame, bbox)

while True:
    ok, frame = video.read()
    if not ok:
        break

    found, box = tracker.update(frame)

    if found:
        x, y, width, height = [int(value) for value in box]
        cv2.rectangle(
            frame,
            (x, y),
            (x + width, y + height),
            (0, 255, 0),
            2
        )
        cv2.putText(
            frame,
            "Takip ediliyor",
            (x, max(25, y - 10)),
            cv2.FONT_HERSHEY_SIMPLEX,
            0.7,
            (0, 255, 0),
            2
        )
    else:
        cv2.putText(
            frame,
            "Takip kaybedildi",
            (20, 35),
            cv2.FONT_HERSHEY_SIMPLEX,
            0.8,
            (0, 0, 255),
            2
        )

    cv2.imshow("Nesne takibi", frame)

    # ESC tuşu işlemi sonlandırır.
    if cv2.waitKey(30) & 0xFF == 27:
        break

video.release()
cv2.destroyAllWindows()

Kodu çalıştırma​

  1. Video dosyasını hazırlayın. Video dosyasını Python dosyasıyla aynı klasöre koyun veya cv2.VideoCapture() içindeki yolu değiştirin.
  2. Programı başlatın. Komut satırında python nesne_takip.py komutunu çalıştırın. İlk karede bir seçim penceresi açılır.
  3. Nesneyi seçin. Fareyle nesnenin tamamını mümkün olduğunca sıkı çevreleyen bir dikdörtgen çizin ve seçimi onaylayın. Arka planı fazla içeren seçimler takip kararlılığını azaltabilir.
  4. Takip sonucunu izleyin. Yeşil dikdörtgen nesne bulunduğu sürece güncellenir. Kırmızı “Takip kaybedildi” yazısı görünürse izleyici nesnenin konumunu güvenilir biçimde tahmin edememiştir.
  5. İşlemi sonlandırın. Görüntü penceresi etkinken ESC tuşuna basın. Video dosyasının sonuna gelindiğinde program da kendiliğinden kapanır.

Hangi yaklaşım ne zaman kullanılmalı?​


Tek bir nesneyi kısa veya orta uzunlukta bir videoda izlemek için ilk karede ROI seçip takipçi başlatmak yeterlidir. Daha uzun videolarda veya nesnenin sık sık kapanabildiği sahnelerde, nesneyi belirli aralıklarla yeniden algılayan bir modelle takipçiyi birlikte kullanmak daha güvenlidir.
YaklaşımBaşlangıç girdisiGüçlü yönüSınırı
Elle seçilen ROI + takipçiİlk karede dikdörtgenKurulumu ve örneği basittirNesne kaybolunca kendini yeniden bulamaz
Algılama + takipNesne sınıfı veya algılama modeliKayıptan sonra yeniden başlatılabilirDaha fazla işlem gücü ve model kurulumu ister
Optik akışKareler arasındaki özellik noktalarıHareket yönünü ve kamera hareketini incelemeye uygundurTek başına nesnenin sınıfını belirlemez
Tablodaki “takip kaybedildi” durumu, nesnenin kesin olarak yok olduğunu göstermez. Nesne kameranın görüşünden çıkmış, başka bir nesnenin arkasında kalmış veya ışık ve görünüş değişimi nedeniyle izleyicinin tahmin alanından uzaklaşmış olabilir. Bu durumda yeni bir ROI seçmek, daha uygun bir takipçi denemek veya düzenli nesne algılama eklemek gerekir.

Örneğin kamera sabitse ve kırmızı bir top kadraj içinde hareket ediyorsa, ilk karede topu seçtiğinizde yeşil dikdörtgenin kareler boyunca topu izlemesi beklenir. Top kısa süreyle bir nesnenin arkasında kalıp yeniden görünürse dikdörtgen yanlış konuma kayabilir. Bu çıktı, algoritmanın “topu tanıdığını” değil, görüntü özelliklerine göre konumu tahmin ettiğini gösterir.
 

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Geri
Üst