#ifndef OPENPOSE_HAND_W_HAND_RENDERER_HPP #define OPENPOSE_HAND_W_HAND_RENDERER_HPP #include #include #include namespace op { template class WHandRenderer : public Worker { public: explicit WHandRenderer(const std::shared_ptr& handRenderer); virtual ~WHandRenderer(); void initializationOnThread(); void work(TDatums& tDatums); private: std::shared_ptr spHandRenderer; DELETE_COPY(WHandRenderer); }; } // Implementation #include namespace op { template WHandRenderer::WHandRenderer(const std::shared_ptr& handRenderer) : spHandRenderer{handRenderer} { } template WHandRenderer::~WHandRenderer() { } template void WHandRenderer::initializationOnThread() { spHandRenderer->initializationOnThread(); } template void WHandRenderer::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__); // Render people hands for (auto& tDatumPtr : *tDatums) spHandRenderer->renderHand( tDatumPtr->outputData, tDatumPtr->handKeypoints, (float)tDatumPtr->scaleInputToOutput); // 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(WHandRenderer); } #endif // OPENPOSE_HAND_W_HAND_RENDERER_HPP