在Python中使用背景减法进行质心跟踪

时间:2018-12-04 01:44:42

标签: python opencv background-subtraction

所以我一直在按照本教程进行质心跟踪 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 []列表中,并且应该为此提供相似的结果,否则我错了并且不理解这是如何工作的?任何帮助将不胜感激

2 个答案:

答案 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,然后在那之后就可以了