| | #ifndef OPENPOSE_POSE_POSE_EXTRACTOR_HPP |
| | #define OPENPOSE_POSE_POSE_EXTRACTOR_HPP |
| |
|
| | #include <openpose/core/common.hpp> |
| | #include <openpose/core/enumClasses.hpp> |
| | #include <openpose/core/keepTopNPeople.hpp> |
| | #include <openpose/pose/poseParameters.hpp> |
| | #include <openpose/pose/poseExtractorNet.hpp> |
| | #include <openpose/tracking/personIdExtractor.hpp> |
| | #include <openpose/tracking/personTracker.hpp> |
| |
|
| | namespace op |
| | { |
| | class OP_API PoseExtractor |
| | { |
| | public: |
| | PoseExtractor(const std::shared_ptr<PoseExtractorNet>& poseExtractorNet, |
| | const std::shared_ptr<KeepTopNPeople>& keepTopNPeople = nullptr, |
| | const std::shared_ptr<PersonIdExtractor>& personIdExtractor = nullptr, |
| | const std::shared_ptr<std::vector<std::shared_ptr<PersonTracker>>>& personTracker = {}, |
| | const int numberPeopleMax = -1, const int tracking = -1); |
| |
|
| | virtual ~PoseExtractor(); |
| |
|
| | void initializationOnThread(); |
| |
|
| | void forwardPass(const std::vector<Array<float>>& inputNetData, |
| | const Point<int>& inputDataSize, |
| | const std::vector<double>& scaleRatios, |
| | const Array<float>& poseNetOutput = Array<float>{}, |
| | const long long frameId = -1ll); |
| |
|
| | |
| | Array<float> getHeatMapsCopy() const; |
| |
|
| | std::vector<std::vector<std::array<float, 3>>> getCandidatesCopy() const; |
| |
|
| | Array<float> getPoseKeypoints() const; |
| |
|
| | Array<float> getPoseScores() const; |
| |
|
| | float getScaleNetToOutput() const; |
| |
|
| | |
| | void keepTopPeople(Array<float>& poseKeypoints, const Array<float>& poseScores) const; |
| |
|
| | |
| | |
| | Array<long long> extractIds(const Array<float>& poseKeypoints, const Matrix& cvMatInput, |
| | const unsigned long long imageIndex = 0ull); |
| |
|
| | |
| | Array<long long> extractIdsLockThread(const Array<float>& poseKeypoints, const Matrix& cvMatInput, |
| | const unsigned long long imageIndex, |
| | const long long frameId); |
| |
|
| | |
| | void track(Array<float>& poseKeypoints, Array<long long>& poseIds, |
| | const Matrix& cvMatInput, const unsigned long long imageViewIndex = 0ull); |
| |
|
| | void trackLockThread(Array<float>& poseKeypoints, Array<long long>& poseIds, |
| | const Matrix& cvMatInput, |
| | const unsigned long long imageViewIndex, |
| | const long long frameId); |
| |
|
| | private: |
| | const int mNumberPeopleMax; |
| | const int mTracking; |
| | const std::shared_ptr<PoseExtractorNet> spPoseExtractorNet; |
| | const std::shared_ptr<KeepTopNPeople> spKeepTopNPeople; |
| | const std::shared_ptr<PersonIdExtractor> spPersonIdExtractor; |
| | const std::shared_ptr<std::vector<std::shared_ptr<PersonTracker>>> spPersonTrackers; |
| |
|
| | DELETE_COPY(PoseExtractor); |
| | }; |
| | } |
| |
|
| | #endif |
| |
|