| #ifndef OPENPOSE_POSE_POSE_EXTRACTOR_NET_HPP |
| #define OPENPOSE_POSE_POSE_EXTRACTOR_NET_HPP |
|
|
| #include <atomic> |
| #include <openpose/core/common.hpp> |
| #include <openpose/core/enumClasses.hpp> |
| #include <openpose/pose/poseParameters.hpp> |
|
|
| namespace op |
| { |
| class OP_API PoseExtractorNet |
| { |
| public: |
| PoseExtractorNet(const PoseModel poseModel, |
| const std::vector<HeatMapType>& heatMapTypes = {}, |
| const ScaleMode heatMapScaleMode = ScaleMode::ZeroToOneFixedAspect, |
| const bool addPartCandidates = false, |
| const bool maximizePositives = false); |
|
|
| virtual ~PoseExtractorNet(); |
|
|
| void initializationOnThread(); |
|
|
| virtual void forwardPass( |
| const std::vector<Array<float>>& inputNetData, const Point<int>& inputDataSize, |
| const std::vector<double>& scaleRatios = {1.f}, const Array<float>& poseNetOutput = Array<float>{}) = 0; |
|
|
| virtual const float* getCandidatesCpuConstPtr() const = 0; |
|
|
| virtual const float* getCandidatesGpuConstPtr() const = 0; |
|
|
| virtual const float* getHeatMapCpuConstPtr() const = 0; |
|
|
| virtual const float* getHeatMapGpuConstPtr() const = 0; |
|
|
| virtual std::vector<int> getHeatMapSize() const = 0; |
|
|
| Array<float> getHeatMapsCopy() const; |
|
|
| std::vector<std::vector<std::array<float,3>>> getCandidatesCopy() const; |
|
|
| virtual const float* getPoseGpuConstPtr() const = 0; |
|
|
| Array<float> getPoseKeypoints() const; |
|
|
| Array<float> getPoseScores() const; |
|
|
| float getScaleNetToOutput() const; |
|
|
| double get(const PoseProperty property) const; |
|
|
| void set(const PoseProperty property, const double value); |
|
|
| void increase(const PoseProperty property, const double value); |
|
|
| void clear(); |
|
|
| protected: |
| const PoseModel mPoseModel; |
| Point<int> mNetOutputSize; |
| Array<float> mPoseKeypoints; |
| Array<float> mPoseScores; |
| float mScaleNetToOutput; |
|
|
| void checkThread() const; |
|
|
| virtual void netInitializationOnThread() = 0; |
|
|
| private: |
| const std::vector<HeatMapType> mHeatMapTypes; |
| const ScaleMode mHeatMapScaleMode; |
| const bool mAddPartCandidates; |
| std::array<std::atomic<double>, (int)PoseProperty::Size> mProperties; |
| std::thread::id mThreadId; |
|
|
| DELETE_COPY(PoseExtractorNet); |
| }; |
| } |
|
|
| #endif |
|
|