forked from tryagainconcepts/tf-pose-estimation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
run_video.py
78 lines (67 loc) · 2.21 KB
/
run_video.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import argparse
import logging
import time
import cv2
import numpy as np
from tf_pose.estimator import TfPoseEstimator
from tf_pose.networks import get_graph_path, model_wh
logger = logging.getLogger("TfPoseEstimator-Video")
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter("[%(asctime)s] [%(name)s] [%(levelname)s] %(message)s")
ch.setFormatter(formatter)
logger.addHandler(ch)
fps_time = 0
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="tf-pose-estimation Video")
parser.add_argument("--video", type=str, default="")
parser.add_argument(
"--resolution",
type=str,
default="432x368",
help="network input resolution. default=432x368",
)
parser.add_argument(
"--model",
type=str,
default="mobilenet_thin",
help="cmu / mobilenet_thin / mobilenet_v2_large / mobilenet_v2_small",
)
parser.add_argument(
"--show-process",
type=bool,
default=False,
help="for debug purpose, if enabled, speed for inference is dropped.",
)
parser.add_argument(
"--showBG", type=bool, default=True, help="False to show skeleton only."
)
args = parser.parse_args()
logger.debug("initialization %s : %s" % (args.model, get_graph_path(args.model)))
w, h = model_wh(args.resolution)
e = TfPoseEstimator(get_graph_path(args.model), target_size=(w, h))
cap = cv2.VideoCapture(args.video)
if cap.isOpened() is False:
print("Error opening video stream or file")
while cap.isOpened():
ret_val, image = cap.read()
humans = e.inference(image)
if not args.showBG:
image = np.zeros(image.shape)
image = TfPoseEstimator.draw_humans(image, humans, imgcopy=False)
cv2.putText(
image,
"FPS: %f" % (1.0 / (time.time() - fps_time)),
(10, 10),
cv2.FONT_HERSHEY_SIMPLEX,
0.5,
(0, 255, 0),
2,
)
cv2.imshow("tf-pose-estimation result", image)
fps_time = time.time()
if cv2.waitKey(1) == 27:
break
cv2.destroyAllWindows()
logger.debug("finished+")