#ifndef OPENPOSE_EXAMPLES_TUTORIAL_W_USER_POST_PROCESSING_HPP #define OPENPOSE_EXAMPLES_TUTORIAL_W_USER_POST_PROCESSING_HPP #include #include #include #include "userPostProcessing.hpp" namespace op { template class WUserPostProcessing : public Worker { public: WUserPostProcessing(const std::shared_ptr& userPostProcessing); void initializationOnThread(); void work(TDatums& tDatums); private: std::shared_ptr spUserPostProcessing; DELETE_COPY(WUserPostProcessing); }; } // Implementation #include namespace op { template WUserPostProcessing::WUserPostProcessing(const std::shared_ptr& userPostProcessing) : spUserPostProcessing{userPostProcessing} { } template void WUserPostProcessing::initializationOnThread() { } template void WUserPostProcessing::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__); for (auto& datum : *tDatums) { // THESE 2 ARE THE ONLY LINES THAT THE USER MUST MODIFY ON THIS HPP FILE, by using the proper // function and datum elements cv::Mat cvOutputData = OP_OP2CVMAT(datum->cvOutputData); spUserPostProcessing->doSomething(cvOutputData, cvOutputData); } // 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(WUserPostProcessing); } #endif // OPENPOSE_EXAMPLES_TUTORIAL_W_USER_POST_PROCESSING_HPP