2015-06-21 26 views
9

增加我試圖根據使用介質流跟蹤,但邊框區域跟蹤我的手,保持一段時間後增加。它在前10秒左右正常工作。的BoundingBox/ROI的大小來追蹤對象保持在固定儘管初始大小

這裏有一個代碼片段:

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() 

回答

3

我就從下面的行刪除調用dilate

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

從SimpleCV documentation

擴張(迭代= 1) 應用變形ological dilation。膨脹具有平滑斑點而增強噪聲斑點量的效果。此實現使用默認的openCV 3X3方形內核Erosion實際上是一個局部最大值檢測器,內核在圖像上移動並在內核中獲取最大值。

變量filtered用於每個循環迭代filtered.findBlobs()。這些斑點的強度和密度用於確定邊界框的尺寸。

要調用與擴張沿stretch功能。隨着時間的推移,對dilate的呼叫導致噪音被檢測爲手的一部分,因此邊界框相應地增加。

+1

我會試一試,讓你知道。 –

+0

我看到一些改進,但仍然是同樣的問題。 –

+0

盒子最終會達到最大尺寸還是會無限增長? – ross