【发布时间】:2021-05-05 08:45:20
【问题描述】:
我有一个代码可以检测视频中的汽车并对其进行计数,但出现了问题。如果同一辆车出现在接下来的帧中,它们会再次被计算在内。我尝试了不同的资源,但没有找到任何有效的答案。
我的代码
import cv2
backsub = cv2.bgsegm.createBackgroundSubtractorMOG()
capture = cv2.VideoCapture("C:/Users/chr04/Desktop/People and car counting/Car Counting/car video/video2.mp4")
best_id=0
i = 0
car = 0
if capture:
while True:
ret, frame = capture.read()
if ret:
fgmask = backsub.apply(frame, None, 0.01)
contours, hierarchy = cv2.findContours(fgmask.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_NONE)
try: hierarchy = hierarchy[0]
except: hierarchy = []
for contour, hier in zip(contours, hierarchy):
(x,y,w,h) = cv2.boundingRect(contour)
if w > 20 and h > 20:
best_id+=1
cv2.rectangle(frame, (x,y), (x+w,y+h), (255, 0, 0), 2)
cv2.putText(frame, str(best_id), (x,y-5), cv2.FONT_HERSHEY_SIMPLEX,
0.5, (255, 0, 0), 2)
print(best_id)
cv2.imshow("Track", frame)
cv2.imshow("background sub", fgmask)
key = cv2.waitKey(10)
if key == ord('q'):
break
【问题讨论】:
标签: python-3.x opencv computer-vision