@@ -41,6 +41,7 @@ namespace op
4141 // Workers
4242 TWorker wDatumProducer;
4343 TWorker spWIdGenerator;
44+ TWorker spWScaleAndSizeExtractor;
4445 TWorker spWCvMatToOpInput;
4546 TWorker spWCvMatToOpOutput;
4647 std::vector<std::vector<TWorker>> spWPoses;
@@ -172,6 +173,13 @@ namespace op
172173 const auto datumProducer = std::make_shared<DatumProducer<TDatums>>(producerSharedPtr);
173174 wDatumProducer = std::make_shared<WDatumProducer<TDatumsPtr, TDatums>>(datumProducer);
174175
176+ // Get input scales and sizes
177+ const auto scaleAndSizeExtractor = std::make_shared<ScaleAndSizeExtractor>(
178+ wrapperStructPose.netInputSize , finalOutputSize, wrapperStructPose.scalesNumber ,
179+ wrapperStructPose.scaleGap
180+ );
181+ spWScaleAndSizeExtractor = std::make_shared<WScaleAndSizeExtractor<TDatumsPtr>>(scaleAndSizeExtractor);
182+
175183 // Input cvMat to OpenPose format
176184 const auto cvMatToOpInput = std::make_shared<CvMatToOpInput>();
177185 spWCvMatToOpInput = std::make_shared<WCvMatToOpInput<TDatumsPtr>>(cvMatToOpInput);
@@ -281,6 +289,7 @@ namespace op
281289 mThreadManager .reset ();
282290 // Reset
283291 wDatumProducer = nullptr ;
292+ spWScaleAndSizeExtractor = nullptr ;
284293 spWCvMatToOpInput = nullptr ;
285294 spWCvMatToOpOutput = nullptr ;
286295 spWPoses.clear ();
@@ -301,7 +310,8 @@ namespace op
301310 {
302311 // Security checks
303312 if (spWCvMatToOpInput == nullptr )
304- error (" Configure the WrapperHandFromJsonTest class before calling `start()`." , __LINE__, __FUNCTION__, __FILE__);
313+ error (" Configure the WrapperHandFromJsonTest class before calling `start()`." ,
314+ __LINE__, __FUNCTION__, __FILE__);
305315 if (wDatumProducer == nullptr )
306316 {
307317 const auto message = " You need to use the OpenPose default producer." ;
@@ -323,9 +333,11 @@ namespace op
323333 // OpenPose producer
324334 // Thread 0 or 1, queues 0 -> 1
325335 if (spWCvMatToOpOutput == nullptr )
326- mThreadManager .add (threadId++, {wDatumProducer, spWIdGenerator, spWCvMatToOpInput}, queueIn++, queueOut++);
336+ mThreadManager .add (threadId++, {wDatumProducer, spWIdGenerator, spWScaleAndSizeExtractor,
337+ spWCvMatToOpInput}, queueIn++, queueOut++);
327338 else
328- mThreadManager .add (threadId++, {wDatumProducer, spWIdGenerator, spWCvMatToOpInput, spWCvMatToOpOutput}, queueIn++, queueOut++);
339+ mThreadManager .add (threadId++, {wDatumProducer, spWIdGenerator, spWScaleAndSizeExtractor,
340+ spWCvMatToOpInput, spWCvMatToOpOutput}, queueIn++, queueOut++);
329341 // Pose estimation & rendering
330342 // Thread 1 or 2...X, queues 1 -> 2, X = 2 + #GPUs
331343 if (!spWPoses.empty ())
0 commit comments