Python错误数字.int32对象不是iterab

2024-04-23 15:41:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个下面的python代码,可以检测帧中的人。一旦被检测到,它就会得到人的边界框,即person_box。从person_box我可以得到边界框的startX, startYwidth height。但是在下面的代码中,在for循环中,我得到的错误是numpy.int32 object is not iterable

person_box = person_detections[0, 0, i, 3:7] * np.array([W, H, W, H])
person_box = person_box.astype(int)
print(person_box)
(startX, startY, endX, endY) = person_box.astype("int")
width = endX - startX
height = endY - startY

for (startX, startY, width, height) in person_box:
    person_box = np.array([startX, startY, startX + width, startY + height])

输出

[159 156 451 431]

由于我对numpy数组没有太多的经验,所以我不能很好地理解这个错误。请帮忙。谢谢。你知道吗


Tags: 代码numpyboxfor错误npwidtharray
1条回答
网友
1楼 · 发布于 2024-04-23 15:41:22

for循环将迭代person_box并逐个参数传递参数。您正在尝试拆分参数并将其分配给for (startX, startY, width, height) in person_box:中的startX, startY, width, height您可以尝试:

person_box = np.array([person_box [0], person_box[1] , person_box[0] + person_box[2] , person_box[1] + person_box[3] ])

或者

startX = person_box[0]
startY = person_box[1]
width = person_box[2]
height = person_box[3]
person_box = np.array([startX, startY, startX + width, startY + height])

相关问题 更多 >