2014-09-06 13 views
5

Arka planı kaldırmak için BackgroundSubtractorMOG kullanmayı denedim ancak kareyi zaten bırakmış bazı nesneler var ancak BackgroundSubtractorMOG.apply() öğesi hala nesnenin hala üzerinde olduğunu gösteriyor. faliyet alani, sahne.BackgroundSubtractorMOG çerçeveyi terk ettikten sonra nesneyi hala tutuyor

İşte benim kod

Ben de özel parametrelerin (tarih = 200, nmixtures = 5 oran = 0.8) ancak sonuç aynıdır ile BackgroundSubtractorMOG denedim
inputVideo = cv2.VideoCapture('input.avi') 
fgbg = cv2.BackgroundSubtractorMOG() 

while inputVideo.isOpened(): 
    retVal, frame = inputVideo.read() 

    fgmask = fgbg.apply(frame) 

    cv2.imshow('Foreground', fgmask) 
    cv2.imshow('Original', frame) 
    if cv2.waitKey(1) & 0xFF == 27: 
     break 

olduğunu. Yanlış bir şey mi yaptım ya da herhangi bir tavsiyede bulundum mu? Lütfen yardım et.

+0

Ben aynı sorunu yaşıyorum bulundu Sebastian Ramirez gitmelidir. Tarih parametresi görmezden geliyor. İki farklı değer kullanmak, tam olarak aynı görüntüyü üretir. Tarih parametresinin 0'a varsayılan olduğunu düşünüyorum, bu da başlangıç ​​arka plan görüntüsünün kullanılan tek görüntü olduğu ve algoritmanın asla öğrenmediği anlamına gelir. – RussellStewart

cevap

8

Sorun, fgbg.apply adresindedir. Bazı nedenlerle, learningRate, 0 olarak ayarlanmıştır. Make böyle diyoruz:

history = 10 # or whatever you want it to be 

fgmask = fgbg.apply(frame, learningRate=1.0/history) 

Kredi OpenCV bir bilet başladı ve çözüm

+0

Yorum için çok teşekkür ederim, bana yardım ediyor. – Arsen

İlgili konular