1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import os
- import sys
- import cv2
- import numpy as np
- import argparse
- def argsparser():
- parser = argparse.ArgumentParser(description=__doc__)
- parser.add_argument(
- "--video_file",
- type=str,
- default=None,
- help="Path of video file, `video_file` or `camera_id` has a highest priority."
- )
- parser.add_argument(
- '--region_polygon',
- nargs='+',
- type=int,
- default=[],
- help="Clockwise point coords (x0,y0,x1,y1...) of polygon of area when "
- "do_break_in_counting. Note that only support single-class MOT and "
- "the video should be taken by a static camera.")
- return parser
- def get_video_info(video_file, region_polygon):
- entrance = []
- assert len(region_polygon
- ) % 2 == 0, "region_polygon should be pairs of coords points."
- for i in range(0, len(region_polygon), 2):
- entrance.append([region_polygon[i], region_polygon[i + 1]])
- if not os.path.exists(video_file):
- print("video path '{}' not exists".format(video_file))
- sys.exit(-1)
- capture = cv2.VideoCapture(video_file)
- width = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH))
- height = int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT))
- print("video width: %d, height: %d" % (width, height))
- np_masks = np.zeros((height, width, 1), np.uint8)
- entrance = np.array(entrance)
- cv2.fillPoly(np_masks, [entrance], 255)
- fps = int(capture.get(cv2.CAP_PROP_FPS))
- frame_count = int(capture.get(cv2.CAP_PROP_FRAME_COUNT))
- print("video fps: %d, frame_count: %d" % (fps, frame_count))
- cnt = 0
- while (1):
- ret, frame = capture.read()
- cnt += 1
- if cnt == 3: break
- alpha = 0.3
- img = np.array(frame).astype('float32')
- mask = np_masks[:, :, 0]
- color_mask = [0, 0, 255]
- idx = np.nonzero(mask)
- color_mask = np.array(color_mask)
- img[idx[0], idx[1], :] *= 1.0 - alpha
- img[idx[0], idx[1], :] += alpha * color_mask
- cv2.imwrite('region_vis.jpg', img)
- if __name__ == "__main__":
- parser = argsparser()
- FLAGS = parser.parse_args()
- get_video_info(FLAGS.video_file, FLAGS.region_polygon)
- # python get_video_info.py --video_file=demo.mp4 --region_polygon 200 200 400 200 300 400 100 400
|