OpenPose  1.0.0rc2
OpenPose: A Real-Time Multi-Person Key-Point Detection And Multi-Threading C++ Library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
poseExtractor.hpp
Go to the documentation of this file.
1 #ifndef OPENPOSE_POSE_POSE_EXTRACTOR_HPP
2 #define OPENPOSE_POSE_POSE_EXTRACTOR_HPP
3 
4 #include <atomic>
5 #include <thread>
9 
10 namespace op
11 {
13  {
14  public:
15  PoseExtractor(const PoseModel poseModel,
16  const std::vector<HeatMapType>& heatMapTypes = {},
17  const ScaleMode heatMapScale = ScaleMode::ZeroToOne,
18  const bool addPartCandidates = false);
19 
20  virtual ~PoseExtractor();
21 
22  void initializationOnThread();
23 
24  virtual void forwardPass(const std::vector<Array<float>>& inputNetData, const Point<int>& inputDataSize,
25  const std::vector<double>& scaleRatios = {1.f}) = 0;
26 
27  virtual const float* getCandidatesCpuConstPtr() const = 0;
28 
29  virtual const float* getCandidatesGpuConstPtr() const = 0;
30 
31  virtual const float* getHeatMapCpuConstPtr() const = 0;
32 
33  virtual const float* getHeatMapGpuConstPtr() const = 0;
34 
35  virtual std::vector<int> getHeatMapSize() const = 0;
36 
37  Array<float> getHeatMapsCopy() const;
38 
39  std::vector<std::vector<std::array<float,3>>> getCandidatesCopy() const;
40 
41  virtual const float* getPoseGpuConstPtr() const = 0;
42 
43  Array<float> getPoseKeypoints() const;
44 
45  Array<float> getPoseScores() const;
46 
47  float getScaleNetToOutput() const;
48 
49  double get(const PoseProperty property) const;
50 
51  void set(const PoseProperty property, const double value);
52 
53  void increase(const PoseProperty property, const double value);
54 
55  protected:
61 
62  void checkThread() const;
63 
64  virtual void netInitializationOnThread() = 0;
65 
66  private:
67  const std::vector<HeatMapType> mHeatMapTypes;
68  const ScaleMode mHeatMapScaleMode;
69  const bool mAddPartCandidates;
70  std::array<std::atomic<double>, (int)PoseProperty::Size> mProperties;
71  std::thread::id mThreadId;
72 
74  };
75 }
76 
77 #endif // OPENPOSE_POSE_POSE_EXTRACTOR_HPP
#define DELETE_COPY(className)
Definition: macros.hpp:30
Definition: poseExtractor.hpp:12
PoseModel
Definition: enumClasses.hpp:9
const PoseModel mPoseModel
Definition: poseExtractor.hpp:56
PoseProperty
Definition: enumClasses.hpp:22
ScaleMode
Definition: enumClasses.hpp:6
float mScaleNetToOutput
Definition: poseExtractor.hpp:60
Array< float > mPoseScores
Definition: poseExtractor.hpp:59
std::vector< T, Alloc > vector
Definition: cl2.hpp:567
Array< float > mPoseKeypoints
Definition: poseExtractor.hpp:58
#define OP_API
Definition: macros.hpp:15
Point< int > mNetOutputSize
Definition: poseExtractor.hpp:57