我一直在研究一些使用YOLO和SORT跟踪和计数对象的代码; https://github.com/guillelopez/python-traffic-counter-with-yolo-and-sort/blob/master/README.md在跟踪和计数方面做得非常好,但是,它会在通用计数器中对COCO数据集提供的所有对象进行计数,而我试图对不同的对象(人,电话,狗等)进行计数),这样我就可以更轻松地操作数据。
在每次迭代中简单地打印classIDs
时,它会为框架中的每个对象打印相应的ID,但是我无法确定哪些对象越过了特定计数器。
计算对象的循环
if indexIDs[i] in previous:
previous_box = previous[indexIDs[i]]
(x2, y2) = (int(previous_box[0]), int(previous_box[1]))
(w2, h2) = (int(previous_box[2]), int(previous_box[3]))
p0 = (int(x + (w-x)/2), int(y + (h-y)/2))
p1 = (int(x2 + (w2-x2)/2), int(y2 + (h2-y2)/2))
cv2.line(frame, p0, p1, color, 3)
if intersect(p0, p1, line[0], line[1]):
personCounter += 1
有关更多背景信息,我建议您查看上面链接中的完整代码。