Python类项目无法正确更新

时间:2019-07-17 11:52:59

标签: python python-3.x tensorflow

我正在创建简化的对象,以便在使用opencv进行可视化的tensorflow中轻松计数。我想连续不断地单独更新每个对象的质心(中心)位置。同时保留将新对象添加到列表的功能。

完整代码HERE 找到视频文件HERE

我尝试更新下面代码中显示的质心。

for index, value in enumerate(classes[0]):
    if scores[0, index] > 0.5:
        current_count = [category_index.get(value)]
        if len(current_count) > total_count:
            total_count = len(current_count)
            print('Total count = ', total_count)
        b = boxes[0]
        for i in range(b.shape[0]):
            # top right
            y1 = b[i, 0] * height
            x1 = b[i, 1] * width
            # bottom left
            y2 = b[i, 2] * height
            x2 = b[i, 3] * width
            centx = int(x1 + ((x2-x1)/2))
            centy = int(y1 + ((y2-y1)/2))
            centroid = (centx, centy)
            p1 = objclass.ObjClass(i, centroid, False, False)

            if len(objects) != 0 and len(objects) == total_count:
                for idx, item in enumerate(objects):
                    if i == objects[idx].num:
                        objects[idx].centroid = p1.centroid
                        break
                    elif i > len(objects) and i != objects[idx].num:
                        objects.append(p1)
            elif len(objects) == 0:
                objects.append(p1)
                break

有趣的是,如果我删除行

elif i > len(objects) and i != objects[idx].num:
   objects.append(p1)

列表中的单个对象将更新其质心,尽管它会更新到检测到的其他对象的初始位置。

类代码

class ObjClass():
    def __init__(self, num, centroid, incount, outcount):
        self.num = num
        self.centroid = centroid
        self.incount = incount
        self.outcount = outcount

此代码无法按预期工作,无论质心保持相同的对象数量如何(质心保持在首次检测到对象时的状态)。

输出是这样的:

   for idx, item in enumerate(objects):
      print(objects[idx].num, objects[idx].centroid)
  • 0(23,256)
  • 2(56,182)

重复此输出,仅显示0和2。

1 个答案:

答案 0 :(得分:0)

虽然这不能直接回答我遇到的特定代码问题。我已经发布了tensorflow不会在帧之间跟踪对象,这意味着如果屏幕上有多个对象,则代码仅会将随机检测到的对象的质心应用于已检测到的对象。它无法知道是否有错。

此记录为HERE