· 5 years ago · Mar 03, 2021, 06:48 PM
1# From Python
2# It requires OpenCV installed for Python
3import sys
4import cv2
5import os
6from sys import platform
7import argparse
8
9
10def display(datums):
11 datum = datums[0]
12 cv2.imshow("OpenPose 1.7.0 - Tutorial Python API", datum.cvOutputData)
13 key = cv2.waitKey(1)
14 return (key == 27)
15
16
17def printKeypoints(datums):
18 datum = datums[0]
19 print("Body keypoints: \n" + str(datum.poseKeypoints))
20 print("Face keypoints: \n" + str(datum.faceKeypoints))
21 print("Left hand keypoints: \n" + str(datum.handKeypoints[0]))
22 print("Right hand keypoints: \n" + str(datum.handKeypoints[1]))
23
24
25try:
26 # Import Openpose (Windows/Ubuntu/OSX)
27 dir_path = os.path.dirname(os.path.realpath(__file__))
28
29 # Change these variables to point to the correct folder (Release/x64 etc.)
30 sys.path.append(dir_path + '/../../python/openpose/Release');
31 os.environ['PATH'] = os.environ['PATH'] + ';' + dir_path + '/../../x64/Release;' + dir_path + '/../../bin;'
32 import pyopenpose as op
33
34
35 # Flags
36 parser = argparse.ArgumentParser()
37 #parser.add_argument("--no-display", action="store_true", help="Disable display.")
38 parser.add_argument("--video", default="/openpose/examples/media/video.avi",help="Process an image. Read all standard formats (jpg, png, bmp, etc.).")
39 args = parser.parse_known_args()
40
41 # Custom Params (refer to include/openpose/flags.hpp for more parameters)
42 params = dict()
43 params["model_folder"] = "../../../models/"
44 #Added by Arturo
45 params["num_gpu"] = "1"
46
47
48
49
50 # Add others in path?
51 for i in range(0, len(args[1])):
52 curr_item = args[1][i]
53 if i != len(args[1])-1: next_item = args[1][i+1]
54 else: next_item = "1"
55 if "--" in curr_item and "--" in next_item:
56 key = curr_item.replace('-','')
57 if key not in params: params[key] = "1"
58 elif "--" in curr_item and "--" not in next_item:
59 key = curr_item.replace('-','')
60 if key not in params: params[key] = next_item
61
62 # Construct it from system arguments
63 # op.init_argv(args[1])
64 # oppython = op.OpenposePython()
65
66 # Starting OpenPose
67 opWrapper = op.WrapperPython(op.ThreadManagerMode.AsynchronousOut)
68 opWrapper.configure(params)
69 opWrapper.start()
70
71 # Main loop
72 userWantsToExit = False
73 while not userWantsToExit:
74 # Pop frame
75 datumProcessed = op.VectorDatum()
76 if opWrapper.waitAndPop(datumProcessed):
77 if not args[0].no_display:
78 # Display image
79 userWantsToExit = display(datumProcessed)
80 printKeypoints(datumProcessed)
81 else:
82 break
83except Exception as e:
84 print(e)
85 sys.exit(-1)
86