2015-06-21 14 views
9

Sto provando a tracciare la mia mano in base all'area utilizzando Media Flow Tracker ma il riquadro di delimitazione continua ad aumentare dopo un po 'di tempo. Funziona correttamente per i primi 10 secondi circa.La dimensione di BoundingBox/ROI per tracciare l'oggetto continua ad aumentare nonostante la dimensione iniziale fissa

Ecco un frammento di codice:

def main(): 
display = SimpleCV.Display() 
cam = Kinect() 
ts = [] 
bb = None 
img = cam.getDepth().flipHorizontal() 
while display.isNotDone(): 
    depth = cam.getDepth().flipHorizontal() 
    filtered = depth.stretch(0, 180).binarize().dilate(1) 

    if bb is None: 
     blobs = filtered.findBlobs() 
     if blobs: 
      hand = blobs.filter(abs(7000 - blobs.area()) < 500) 
      print hand 
      if hand: 
       bb = hand[0].boundingBox() 
       print bb 
    if bb is not None: 
     ts = filtered.track("mftrack", ts, img, bb) 
     if ts: 
      ts.drawBB() 
      ts.showPixelVelocityRT() 
      ts.drawPath() 
    filtered.show() 

risposta

3

Vorrei rimuovere la chiamata a dilate dalla seguente riga:

filtered = depth.stretch(0, 180).binarize().dilate(1)

Dal simplecv documentation:

dilatano (iterazioni = 1) Applicare una metamorfosi dilatazione ologica. Una dilatazione ha l'effetto di levigare le bolle mentre intensifica la quantità di bolle di rumore. Questa implementazione utilizza il kernel predefinito openCV 3X3. L'erosione è effettivamente un rilevatore di massimi locali, il kernel si sposta sull'immagine e assume il valore massimo all'interno del kernel.

La variabile filtered viene utilizzato ogni iterazione del ciclo con filtered.findBlobs(). L'intensità e la densità di questi blob vengono utilizzate per determinare le dimensioni del riquadro di delimitazione.

Si sta chiamando la funzione stretch insieme a dilata. Nel tempo, la chiamata a dilate porta al rilevamento di rumore come parte della mano, quindi il riquadro di delimitazione aumenta di conseguenza.

+1

Farò un tentativo e farti sapere. –

+0

Vedo alcuni miglioramenti ma ancora lo stesso problema. –

+0

la casella alla fine raggiunge una dimensione massima o cresce indefinitamente? – ross

Problemi correlati