我在从屏幕上移动的块的中心访问存储的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,我认为问题是因为它不是每次都向列表中添加新值而是附加函数,但我不确定应该如何纠正它。
答案 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