2012-10-20 24 views
6

Üniversite için bir proje yapıyorum ve OpenCV ile çalışıyorum (gerçekten harika).opencv C++ üzerindeki hareketin algılanması (hareketli kamera)

Artık benim sorunum:
Bir videom var (.avi) ve RGB aralığında aniden göründüğü lekeler hakkında bilmek istediğiniz tüm bilgileri kırmızı ve sarı arasında algıladım. Piksel değerleriyle ilgili tüm bilgileri kaydeden bir matrisi fark ettikten sonra, nihayet medyan piksel değerlerini temsil eden kırmızı ölçekte bir görüntü oluşturuyorum.

Asıl sorun, videonun statik olmaması ve kameranın hareket etmemesidir (çok fazla değil ama hareket eder).
Kamera hareketinin x ve y koordinatlarını hesaplayabilir miyim, böylece matrisin değerini değiştirebilir miyim?

+0

Hareket algılamayı nereden öğrendiniz? lütfen –

cevap

4

İngilizceniz kimin umrunda? Sorunu anlayana kadar :) Gerçekten yapabileceğiniz şey, OpenCV'de uygulanan KLT hareket algılamada bir atış yapmaktır. İşte KLT için bir link de optical flow olarak bilinir. Eğer bloblarla sınırlı hareket vektörlerini filtreleyebilirseniz, izlemek istediğiniz nesneyi kesinlikle tutabilirsiniz. KLT'yi daha iyi ifade etmek için nesneleri ilk koordinatları/alanı takip etmek daha iyidir. Blobları tutmak için OpenCV blobs kütüphanesini kontrol ettin mi? İşte, link

+0

yardım edin! evet ben cvblob biliyorum ve bu benim projemde uygulanmaktadır, ben en iyi çözüm önce optik akış olduğunu okudum gibi, blob ve centroid kordunun alanı hesaplamak ve her blob için bir etiket atar, umarım çalışacak! kamera hareketi gerçekten yavaştır ve eğer optik akışı ile kordonu algılayabilirsem bu projeyi bitirdim! :) teşekkür ederim! – Lorenzo

+0

Hoş geldiniz, yaptıysanız haberim olsun! –

+0

Evet yaptım! Lucas kanade ile yaptım, her karede bir dizi nokta arasındaki farkı hesaplıyorum ve sonuç oldukça iyi! Teşekkür ederiz! – Lorenzo

İlgili konular