#ifndef OPENPOSE_POSE_W_POSE_EXTRACTOR_NET_HPP #define OPENPOSE_POSE_W_POSE_EXTRACTOR_NET_HPP #include #include #include namespace op { template class WPoseExtractorNet : public Worker { public: explicit WPoseExtractorNet(const std::shared_ptr& poseExtractorSharedPtr); virtual ~WPoseExtractorNet(); void initializationOnThread(); void work(TDatums& tDatums); private: std::shared_ptr spPoseExtractorNet; DELETE_COPY(WPoseExtractorNet); }; } // Implementation #include namespace op { template WPoseExtractorNet::WPoseExtractorNet(const std::shared_ptr& poseExtractorSharedPtr) : spPoseExtractorNet{poseExtractorSharedPtr} { } template WPoseExtractorNet::~WPoseExtractorNet() { } template void WPoseExtractorNet::initializationOnThread() { try { spPoseExtractorNet->initializationOnThread(); } catch (const std::exception& e) { error(e.what(), __LINE__, __FUNCTION__, __FILE__); } } template void WPoseExtractorNet::work(TDatums& tDatums) { try { if (checkNoNullNorEmpty(tDatums)) { // Debugging log opLogIfDebug("", Priority::Low, __LINE__, __FUNCTION__, __FILE__); // Profiling speed const auto profilerKey = Profiler::timerInit(__LINE__, __FUNCTION__, __FILE__); // Extract people pose for (auto& tDatumPtr : *tDatums) { spPoseExtractorNet->forwardPass( tDatumPtr->inputNetData, Point{tDatumPtr->cvInputData.cols(), tDatumPtr->cvInputData.rows()}, tDatumPtr->scaleInputToNetInputs, tDatumPtr->poseNetOutput); tDatumPtr->poseCandidates = spPoseExtractorNet->getCandidatesCopy(); tDatumPtr->poseHeatMaps = spPoseExtractorNet->getHeatMapsCopy(); tDatumPtr->poseKeypoints = spPoseExtractorNet->getPoseKeypoints().clone(); tDatumPtr->poseScores = spPoseExtractorNet->getPoseScores().clone(); tDatumPtr->scaleNetToOutput = spPoseExtractorNet->getScaleNetToOutput(); } // Profiling speed Profiler::timerEnd(profilerKey); Profiler::printAveragedTimeMsOnIterationX(profilerKey, __LINE__, __FUNCTION__, __FILE__); // Debugging log opLogIfDebug("", Priority::Low, __LINE__, __FUNCTION__, __FILE__); } } catch (const std::exception& e) { this->stop(); tDatums = nullptr; error(e.what(), __LINE__, __FUNCTION__, __FILE__); } } COMPILE_TEMPLATE_DATUM(WPoseExtractorNet); } #endif // OPENPOSE_POSE_W_POSE_EXTRACTOR_NET_HPP