所以我一直在按照本教程进行质心跟踪 https://www.pyimagesearch.com/2018/07/23/simple-object-tracking-with-opencv/ 并构建了本教程中提到的质心跟踪类。
现在,当我尝试使用背景减法而不是他使用的CNN进行检测时,它不起作用,并且从CentroidTracker.py给出了这个问题
(a1:A)
这是我正在使用的代码
(a4:A)
代码在
处中断(a1:A)-[:RELATED_TO]->(b:B)
行。
这是教程中CentroidTracker的实现:
for i in range(0, inputCentroids):
TypeError: only integer scalar arrays can be converted to a scalar index
我对我在这里做错的事情感到迷茫。我所要做的就是将一个边界框(x,y,x + w,y + h)正确地传递到rects []列表中,并且应该为此提供相似的结果,否则我错了并且不理解这是如何工作的?任何帮助将不胜感激
答案 0 :(得分:1)
您忘记了len函数:for i in range(0, len(inputCentroids)):
答案 1 :(得分:1)
按照阿克塞尔·普伊格(Axel Puig)的话说,然后将此行添加到主要方法中
objects = ct.update(rects)
if objects is not None:
for (objectID, centroid) in objects.items():
text = "ID:{}".format(objectID)
cv2.putText(frame, text, (centroid[0] - 10, centroid[1] - 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
cv2.circle(frame, (centroid[0], centroid[1]), 4, (0, 255, 0), -1)
解决了问题。我认为发生的事情是第一帧没有初始化跟踪器,所以我需要确保它不是None,然后在那之后就可以了