计算多个移动物体

时间:2018-06-03 08:53:56

标签: python opencv object-detection

我想计算移动的物体。

我可以找到对象的质心:

for i in range(len(contours)):
        if len(contours[i]) >= 5:
           ellipse = cv2.fitEllipse(contours[i])
           (center , axis, angle) = ellipse      
           cx,cy = int(center[0]),int(center[1])     #centroid
           ax1,ax2 = int(axis[0])-2,int(axis[1])-2
           orientation = int(angle)

我画了一句话:

Line = 100
cv2.line(frame, (Line, 0), (Line, 500), (255, 0, 0), 1)

检查质心是否越过该线:

distance = int(cx - Line)
if (distance == 0 or distance == 1):
    counter += 1

问题是;

如果我同时检查distance0的{​​{1}},有时候对象会被计算两次。

另一方面如果我只检查1或仅检查0,有时我会错过该对象。

如何提高计数的准确性?

修改

仅在1方向上移动的对象。绿点代表物体的中心。

最初,-XLine轴和对象上的X来自0th像素,并且在-X轴上。

我从对象的中心像素X坐标中减去Line X坐标。如果它们交叉,则它们必须处于相同的X轴。如果它们处于相同的X坐标,则它们的减法必须等于0

有时LineObject's X坐标不会交叉,似乎对象跳过Line

如果它不是计算多个移动物体的好方法,它会是什么?

enter image description here

0 个答案:

没有答案