def track(video_path, use_gpu=False): video = cv2.VideoCapture(video_path) ret, frame = video.read() if ret: frame = cv2.resize(frame, (input_width, input_height)) if use_gpu: caffe.set_mode_gpu() tracker = Sort(max_age=10) detector = Detector() classes = detector.get_classes() while ret: frame_disp = np.copy(frame) bounding_boxes, counting = detector.infer(frame) class_counting = zip(classes, counting) for pair in class_counting: print('{:s} {:03d}'.format(*pair)) print('') if len(bounding_boxes) > 0: bounding_boxes = np.array(bounding_boxes, np.int32) # convert (x, y, w, h) to (x1, y1, x2, y2) bounding_boxes[:, 2:4] += bounding_boxes[:, 0:2] bounding_boxes[:, 2:4] -= 1 track_results = tracker.update(bounding_boxes) draw_tracking_results(track_results, frame_disp) cv2.imshow('tracking', frame_disp) key = cv2.waitKey(1) if key == 27: return ret, frame = video.read() if ret: frame = cv2.resize(frame, (input_width, input_height))