Exemplo n.º 1
0
frame_counter = 0
DETECTION_FRAME_RATE = 48
term_criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1)


def create_blob(_box):
    x, y, w, h = [int(v) for v in _box]
    roi = frame[y:y + h, x:x + w]
    hsv_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV)
    roi_hist = cv2.calcHist([hsv_roi], [0], None, [180], [0, 180])
    return Blob((x, y, w, h), roi_hist)


# initialize trackers and create new blobs
_, frame = cap.read()
initial_bboxes = get_bounding_boxes(frame)
for box in initial_bboxes:
    _blob = create_blob(box)
    blobs[blob_id] = _blob

while True:
    if cap.get(cv2.CAP_PROP_POS_FRAMES) + 1 < cap.get(
            cv2.CAP_PROP_FRAME_COUNT):
        _, frame = cap.read()
        output_frame = frame.copy()

        # update camshift tracker
        hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
        for _id, blob in list(blobs.items()):
            mask = cv2.calcBackProject([hsv], [0], blob.roi_hist, [0, 180], 1)
            ret, _ = cv2.CamShift(mask, blob.roi_box, term_criteria)
Exemplo n.º 2
0
cl_y = round(4 / 5 * f_height)
counting_line = [(0, cl_y), (f_width, cl_y)]
vehicle_count = 0

# create detection ROI
droi = [(0, 0), (f_width, 0), (f_width, f_height), (0, f_height)]
if args.droi:
    droi = []
    points = args.droi.replace(' ', '').split('|')
    for point_str in points:
        point = tuple(map(int, point_str.split(',')))
        droi.append(point)

# initialize trackers and create new blobs
droi_frame = get_roi_frame(frame, droi)
initial_bboxes = get_bounding_boxes(droi_frame)
for box in initial_bboxes:
    tracker = cv2.TrackerCSRT_create()
    tracker.init(frame, tuple(box))
    _blob = Blob(box, tracker)
    blobs[blob_id] = _blob

while True:
    k = cv2.waitKey(1)
    if cap.get(cv2.CAP_PROP_POS_FRAMES) + 1 < cap.get(cv2.CAP_PROP_FRAME_COUNT):
        _, frame = cap.read()
        
        for _id, blob in list(blobs.items()):
            # update trackers
            success, box = blob.tracker.update(frame)
            if success: