【问题标题】:Size of BoundingBox/ROI to track object keeps on increasing despite fixed initial size尽管初始大小固定,但跟踪对象的 BoundingBox/ROI 的大小不断增加
【发布时间】:2015-09-06 19:46:12
【问题描述】:

我正在尝试使用 Media Flow Tracker 根据区域跟踪我的手,但边界框在一段时间后不断增加。它在前 10 秒左右正常工作。

这是一个代码sn-p:

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

【问题讨论】:

    标签: python c++ opencv kinect simplecv


    【解决方案1】:

    我将从以下行中删除对 dilate 的调用:

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

    来自 SimpleCV documentation

    扩张(迭代次数=1) 应用形态膨胀。膨胀具有平滑斑点的效果,同时增强了噪声斑点的数量。此实现使用默认的 openCV 3X3 方形内核 Erosion 实际上是一个局部最大值检测器,内核在图像上移动并获取内核内部的最大值。

    变量filtered 在每次循环迭代中与filtered.findBlobs() 一起使用。这些斑点的强度和密度用于确定边界框的尺寸。

    您正在调用stretch 函数和扩张。随着时间的推移,对dilate 的调用会导致噪声被检测为手的一部分,因此边界框会相应增加。

    【讨论】:

    • 我会试一试,让你知道。
    • 我看到了一些改进,但仍然是同样的问题。
    • 盒子最终会达到最大尺寸还是无限增长?
    • 我正在奖励赏金,因为改进得不错,但问题仍然悬而未决。
    • 事实上,我发现 180 最适合我。
    猜你喜欢
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 2021-10-25
    • 1970-01-01
    相关资源
    最近更新 更多