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