从移动物体取得的点列表

时间:2016-06-24 09:35:01

标签: python python-2.7 class opencv append

我在从屏幕上移动的块的中心访问存储的x,y坐标列表时遇到了一些问题。我已经能够成功获得每个帧的块的x和y坐标,但是在存储此信息时遇到问题,然后能够在某些阶段访问该点。 我的目标是能够将这些要点加在一起形成一条线索。 低于我现在拥有的。

班级定义:

    class People:

        def __init__(self):
            self.x = 0
            self.y = 0

假设在检测到中心的每个点处,cX和cY都会正确更新。

    MultPeople=[]

以下内容属于逐帧浏览视频的循环

    Person=People()
    Person.x=cX
    Person.y=cY
    MultPeople.append(Person)

但是现在当我想按顺序访问这些点以加入点时,我只能一次得到它们,因此无法做到。

    for index,man in enumerate(MultPeople):
        print (index,man.x,man.y)
        xplot=man.x
        yplot=man.y
        cv2.circle(frame1, (xplot, yplot), 2, [50, 20, 255], 3)

这成功地在中心点的原始图像上绘制了一个圆圈,但答案是这样回复的

    (0, 306, 379)
    (0, 307, 377)
    (0, 307, 384)
    (0, 305, 396)
    (0, 309, 409)
    (0, 310, 431) 

为了获得索引的值需要添加什么,我假设为了访问某些点需要这样做。

打印索引后,我也输入了以下行,man.x,man.y

        print np.size(MultPeople)

并且每次打印回1,我认为问题是因为它不是每次都向列表中添加新值而是附加函数,但我不确定应该如何纠正它。

1 个答案:

答案 0 :(得分:2)

将更新循环中的所有代码发布到打印循环而不中断,"按原样#34;,因为很难看到这样的问题。但是从我看到的 - 你可能在更新循环中创建,更新和打印了你的列表,如下所示:

while condition:
    MultPeople=[]
    Person=People()
    # Here you somehow get the new cX and cY values
    Person.x=cX
    Person.y=cY
    MultPeople.append(Person)
    for index,man in enumerate(MultPeople):
        print (index,man.x,man.y)
        xplot=man.x
        yplot=man.y
        cv2.circle(frame1, (xplot, yplot), 2, [50, 20, 255], 3)

因此创建了列表MultPeople,附加了一个项目,然后for循环遍历列表并带有一个项目(即它只执行一次,index == 0和{ {1}} size并且您收到了结果。

也就是说,如果我猜对了。你应该按原样发布代码,它很难读取它的碎片。

如果你真正想要的是这样的话:

1