| |
|
|
| import time |
| import cv2 |
| from rtmlib import draw_skeleton |
| from pathlib import Path |
| import argparse |
| import os |
| from rtmo_gpu import RTMO_GPU |
|
|
| if __name__ == "__main__": |
|
|
| |
| parser = argparse.ArgumentParser(description='Process the path to a video file folder.') |
| parser.add_argument('path', type=str, help='Path to the folder containing video files (required)') |
| parser.add_argument('model_path', type=str, help='Path to a RTMO ONNX model file (required)') |
|
|
| |
| args = parser.parse_args() |
|
|
| onnx_model = args.model_path |
|
|
| |
| model_input_size = (416,416) if 'rtmo-t' in onnx_model.lower() else (640,640) |
|
|
| body = RTMO_GPU(onnx_model=onnx_model, |
| model_input_size=model_input_size) |
|
|
| for mp4_path in Path(args.path).glob('*'): |
| |
| |
| cap = cv2.VideoCapture(filename=os.path.abspath(mp4_path)) |
|
|
| frame_idx = 0 |
|
|
| while cap.isOpened(): |
| success, frame = cap.read() |
| frame_idx += 1 |
|
|
| if not success: |
| break |
| s = time.time() |
| keypoints, scores = body(frame) |
| det_time = time.time() - s |
| print(f'det: {round(1.0 / det_time,1)} FPS') |
| |
| img_show = frame.copy() |
| |
| |
| |
|
|
| img_show = draw_skeleton(img_show, |
| keypoints, |
| scores, |
| openpose_skeleton=False, |
| kpt_thr=0.3, |
| line_width=2) |
| img_show = cv2.resize(img_show, (788, 525)) |
| cv2.imshow(f'{onnx_model}', img_show) |
| cv2.waitKey(10) |
|
|