OpenPose  1.0.0rc2
OpenPose: A Real-Time Multi-Person Key-Point Detection And Multi-Threading C++ Library
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros
handDetector.hpp
Go to the documentation of this file.
1 #ifndef OPENPOSE_HAND_HAND_DETECTOR_HPP
2 #define OPENPOSE_HAND_HAND_DETECTOR_HPP
3 
4 #include <mutex>
7 
8 namespace op
9 {
10  // Note: This class is thread-safe, so several GPUs can be running hands and using `updateTracker`, and updateTracker will keep the latest known
11  // tracking
13  {
14  public:
15  explicit HandDetector(const PoseModel poseModel);
16 
17  std::vector<std::array<Rectangle<float>, 2>> detectHands(const Array<float>& poseKeypoints, const double scaleInputToOutput) const;
18 
19  std::vector<std::array<Rectangle<float>, 2>> trackHands(const Array<float>& poseKeypoints, const double scaleInputToOutput);
20 
21  void updateTracker(const std::array<Array<float>, 2>& handKeypoints, const unsigned long long id);
22 
23  private:
24  enum class PosePart : unsigned int
25  {
26  LWrist = 0,
27  LElbow,
28  LShoulder,
29  RWrist,
30  RElbow,
31  RShoulder,
32  Size,
33  };
34 
35  const std::array<unsigned int, (int)PosePart::Size> mPoseIndexes;
36  std::vector<std::array<Point<float>, (int)PosePart::Size>> mPoseTrack;
37  std::vector<Rectangle<float>> mHandLeftPrevious;
38  std::vector<Rectangle<float>> mHandRightPrevious;
39  unsigned long long mCurrentId;
40  std::mutex mMutex;
41 
42  std::array<unsigned int, (int)PosePart::Size> getPoseKeypoints(const PoseModel poseModel,
43  const std::array<std::string, (int)PosePart::Size>& poseStrings) const;
44 
46  };
47 }
48 
49 #endif // OPENPOSE_HAND_HAND_DETECTOR_HPP
#define DELETE_COPY(className)
Definition: macros.hpp:24
Definition: handDetector.hpp:12
PoseModel
Definition: enumClasses.hpp:9
#define OP_API
Definition: macros.hpp:9