You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

video_demo.py 2.0 kB

2 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. # Copyright (c) OpenMMLab. All rights reserved.
  2. import argparse
  3. import cv2
  4. import mmcv
  5. from mmdet.apis import inference_detector, init_detector
  6. def parse_args():
  7. parser = argparse.ArgumentParser(description='MMDetection video demo')
  8. parser.add_argument('video', help='Video file')
  9. parser.add_argument('config', help='Config file')
  10. parser.add_argument('checkpoint', help='Checkpoint file')
  11. parser.add_argument(
  12. '--device', default='cuda:0', help='Device used for inference')
  13. parser.add_argument(
  14. '--score-thr', type=float, default=0.3, help='Bbox score threshold')
  15. parser.add_argument('--out', type=str, help='Output video file')
  16. parser.add_argument('--show', action='store_true', help='Show video')
  17. parser.add_argument(
  18. '--wait-time',
  19. type=float,
  20. default=1,
  21. help='The interval of show (s), 0 is block')
  22. args = parser.parse_args()
  23. return args
  24. def main():
  25. args = parse_args()
  26. assert args.out or args.show, \
  27. ('Please specify at least one operation (save/show the '
  28. 'video) with the argument "--out" or "--show"')
  29. model = init_detector(args.config, args.checkpoint, device=args.device)
  30. video_reader = mmcv.VideoReader(args.video)
  31. video_writer = None
  32. if args.out:
  33. fourcc = cv2.VideoWriter_fourcc(*'mp4v')
  34. video_writer = cv2.VideoWriter(
  35. args.out, fourcc, video_reader.fps,
  36. (video_reader.width, video_reader.height))
  37. for frame in mmcv.track_iter_progress(video_reader):
  38. result = inference_detector(model, frame)
  39. frame = model.show_result(frame, result, score_thr=args.score_thr)
  40. if args.show:
  41. cv2.namedWindow('video', 0)
  42. mmcv.imshow(frame, 'video', args.wait_time)
  43. if args.out:
  44. video_writer.write(frame)
  45. if video_writer:
  46. video_writer.release()
  47. cv2.destroyAllWindows()
  48. if __name__ == '__main__':
  49. main()

No Description

Contributors (2)