5

Web kamerasının video karelerinde sağlam bir hareket algılama ve izleme ihtiyacım var. Arka plan her zaman aynıdır. Amaç, gölgeler olmadan, mümkünse nesnenin konumunu belirlemek, ancak gölgeleri kaldırmak için çok acil değil. Ben arka plan çıkarma ve eşikleme için opencv algoritmasını denedim, ama bu arka plan olarak sadece bir görüntüye bağlıdır, arka planda parlaklık (veya otomatik odaklama) biraz değişiyorsa, güçlü olması için algoritmaya ihtiyacım var. Parlaklık veya bazı gölgeler gibi küçük değişiklikler.Opencv İzleme ile hareket algılama

cevap

3

İzleme için sağlam yöntem, dünyanın dört bir yanında geliştirilmekte olan geniş araştırma ilgi alanlarının bir parçasıdır ... Burada, çok ilginç ama geniş ve açık olan sorununuzu çözmeniz gereken anahtarlar vardır.

Öncelikle bir çoğu parlaklık sabitliğini varsayar (bu nedenle sormak istediğiniz şey zordur). Örneğin:

  • Lucas Kanade
  • Horn-Schunk

yaygın izleme için kullanılan ancak parlaklık sabitliği varsayar Blok eşleştirme.

Sonra diğer ilginç olanları ... meanshift veya camshift izleme, ama sen dayanıklılık için ihtiyaçlarınıza göre belirli bir eşiğin buna göre hesaplanan bir arka projeksiyon kullanabilirsiniz Ancak ... takip etmek bir projeksiyon ihtiyaç olabilir

Bundan sonra yayınlayacağım, Julien,

3

OpenCV'deki eşiği denediğinizde bunu RGB (kırmızı, yeşil, mavi) veya HSV (ton, doygunluk, değer) renk formatlarıyla yapıyor musunuz? Kişisel deneyimden, HSV kodlamasının, eşik için OpenCV ve blob konumunu tanımlamak için cvBlobsLib ile birlikte kullanıldığında video çekimlerinde renkli nesnelerin izlenmesi için çok daha üstün olduğunu düşünüyorum.

HSV'nin daha kolay olması, çünkü HSV'nin, rengi algılamak için tek bir rakam kullanmak zorunda olması (“renk”), bu renkteki birkaç renk tonuna sahip olmanın gerçek olasılığına rağmen, ışıktan koyu tonları. (Renk miktarı ve rengin parlaklığı sırasıyla “doygunluk” ve “değer” parametreleri ile işlenir).

I eşik HSV referans resmi ('imgHSV') cvInRange() OpenCV API çağrısı kullanılarak bir ikili (siyah ve beyaz) bir görüntü elde etmek üzere, yukandaki örnekte

cvInRangeS(imgHSV, 
      cvScalar(104, 178, 70 ), 
      cvScalar(130, 240, 124), 
      imgThresh); 

cvScalar parametreleri, mavi renkte olan renk tonlarını temsil eden HSV değerlerinin alt ve üst sınırlarıdır. Kendi deneylerimde, meydana gelen ton/doygunluk/lum değerlerini izlemek ve gözlemlemekle ilgilenen nesnenin/ekranların ekran görüntülerini yakalayarak bazı uygun maksimum/dak değerlerini elde edebildim.

Kod örneği ile daha ayrıntılı açıklamalar bu blog posting adresinde bulunabilir.

1

Andrian

http://www.pyimagesearch.com/2015/05/25/basic-motion-detection-and-tracking-with-python-and-opencv/ ben takip serin bir öğretici var ve statik resim de

frameDelta = cv2.absdiff(firstFrame, gray) 
thresh = cv2.threshold(frameDelta, 25, 255, cv2.THRESH_BINARY)[1] 
thresh = cv2.dilate(thresh, None, iterations=2) 
(cnts, _) = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, 
cv2.CHAIN_APPROX_SIMPLE) 

4 hat kodu bulmak hareketi de iyi şanslar kullandığım bir iyi deneme testi https://youtu.be/HJBOOZVefXA

var