如何在交通车辆计数器中统计每辆车一次?

时间:2018-01-13 15:18:50

标签: python opencv computer-vision

我一直在使用Python和OpenCV做交通车辆计数器。我目前的算法是计算每帧的车辆数量。这导致相同的车辆每帧计数不止一次。相反,我希望视频中的独特车辆数量。每辆车只计一次。我必须使用什么技术来实现这一目标。

import cv2
print(cv2.__version__)

cascade_src = 'cars.xml'
video_src = 'dataset/video2.avi'
#video_src = 'dataset/video2.avi'

cap = cv2.VideoCapture(video_src)
car_cascade = cv2.CascadeClassifier(cascade_src)

while True:
    ret, img = cap.read()
    if (type(img) == type(None)):
        break

    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    cars = car_cascade.detectMultiScale(gray, 1.1, 1)

    for (x,y,w,h) in cars:
        cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)      

    cv2.imshow('video', img)
    print "Found "+str(len(cars))+" car(s)"
    b=str(len(cars))
    a= float(b)
    if a>=5:
        print ("more traffic")
    else:
        print ("no traffic")    
    if cv2.waitKey(33) == 27:
        break

cv2.destroyAllWindows()

1 个答案:

答案 0 :(得分:0)

1)申请Background subtraction

2)对每个帧应用力矩函数以获得移动车辆的质心

3)定义一个像素值区域(x,y)。当移动汽车的质心越过这个范围时,将计数器增加一个