i = i[0] 是做什么用的?优洛,CV2

what is i = i[0] for? yolo, cv2

我对 python 的计算机视觉还很陌生。我找到了 运行 一个 yolo.weights 文件的脚本。一切都 运行 顺利,直到它到达这一部分:

    for i in indices:
         i = i[0]
         box = bbox[i]
         x,y,w,h = box[0], box[1], box[2], box[3]
         cv2.rectangle(img, (x,y),(x+w,y+h),(0,255,0),2)
         cv2.putText(img, f'{classNames[classIds[i]].capitalize()} {int(confs[i]*100)}%' (x+10,y+30), cv2.FONT_HERSHEY_SIMPLEX, 0.9,(255,255,255),2)

它给出错误:
文件“script_location_etc”,第 47 行,在 findObjects 中 我 = 我 [0] IndexError:标量变量的索引无效。

i = i[0] 到底做了什么?另一种方法是什么。

这意味着您正在尝试从不可迭代类型的索引位置检索值。

i = i[0]表示获取i的第一个元素,保存在i变量中。

所以如果我是可迭代的,它会像这样工作:

>>> i = `some string`
>>> i = i[0]
>>> print(i)
... `s`

所以基本上您的代码告诉您 i 不可迭代,因此没有要获取的第一个元素。如果没有更多详细信息,我真的无法说出为什么会发生这种情况。也许尝试完全删除该行,看看它是否有效。