diff --git a/doxygen.log b/doxygen.log
index 8c933bc7..a687f008 100644
--- a/doxygen.log
+++ b/doxygen.log
@@ -640,12 +640,16 @@ Generating docs for file /home/travis/build/CMU-Perceptual-Computing-Lab/openpos
Generating docs for file /home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/thread/worker.hpp...
Generating docs for file /home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/thread/workerConsumer.hpp...
Generating docs for file /home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/thread/workerProducer.hpp...
-Generating docs for file /home/travi/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:81: warning: explicit link request to 'people' could not be resolved
+Generating docs for file /home/travi/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:88: warning: explicit link request to 'people' could not be resolved
+/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:88: warning: explicit link request to 'face' could not be resolved
+/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:81: warning: explicit link request to 'people' could not be resolved
/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:81: warning: explicit link request to 'face' could not be resolved
/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:74: warning: explicit link request to 'people' could not be resolved
-/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:96: warning: explicit link request to 'people' could not be resolved
-/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:96: warning: explicit link request to 'hand' could not be resolved
-/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:88: warning: explicit link request to 'people' could not be resolved
+/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:110: warning: explicit link request to 'people' could not be resolved
+/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:110: warning: explicit link request to 'hand' could not be resolved
+/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:103: warning: explicit link request to 'people' could not be resolved
+/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:103: warning: explicit link request to 'hand' could not be resolved
+/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:95: warning: explicit link request to 'people' could not be resolved
/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:32: warning: explicit link request to 'scales' could not be resolved
/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:64: warning: explicit link request to 'heatmaps' could not be resolved
/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp:64: warning: explicit link request to 'body' could not be resolved
@@ -710,8 +714,11 @@ Generating docs for compound op::KeypointJsonSaver...
Generating docs for compound op::KeypointSaver...
Generating docs for compound op::VideoSaver...
Generating docs for compound op::WCocoJsonSaver...
-Generating/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/hand/handExtractor.hpp:39: warning: argument 'fpsMode' of command @param is not found in the argument list of op::HandExtractor::forwardPass(const std::vector< std::array< Rectangle< float >, 2 >> handRectangles, const cv::Mat &cvInputData, const float scaleInputToOutput)
-/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/hand/handExtractor.hpp:39: warning: The following parameters of op::HandExtractor::forwardPass(const std::vector< std::array< Rectangle< float >, 2 >> handRectangles, const cv::Mat &cvInputData, const float scaleInputToOutput) are not documented:
+Generating/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/hand/handExtractor.hpp:22: warning: The following parameters of op::HandExtractor::HandExtractor(const Point< int > &netInputSize, const Point< int > &netOutputSize, const std::string &modelFolder, const int gpuId, const unsigned short numberScales=1, const float rangeScales=0.4f, const std::vector< HeatMapType > &heatMapTypes={}, const ScaleMode heatMapScale=ScaleMode::ZeroToOne) are not documented:
+ parameter 'heatMapTypes'
+ parameter 'heatMapScale'
+/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/hand/handExtractor.hpp:44: warning: argument 'fpsMode' of command @param is not found in the argument list of op::HandExtractor::forwardPass(const std::vector< std::array< Rectangle< float >, 2 >> handRectangles, const cv::Mat &cvInputData, const float scaleInputToOutput)
+/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/hand/handExtractor.hpp:44: warning: The following parameters of op::HandExtractor::forwardPass(const std::vector< std::array< Rectangle< float >, 2 >> handRectangles, const cv::Mat &cvInputData, const float scaleInputToOutput) are not documented:
parameter 'handRectangles'
/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/producer/producer.hpp:20: warning: argument 'repeatWhenFinished' of command @param is not found in the argument list of op::Producer::Producer(const ProducerType type)
/home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/producer/producer.hpp:20: warning: The following parameters of op::Producer::Producer(const ProducerType type) are not documented:
@@ -816,5 +823,5 @@ Generating file index...
Generating file member index...
Generating example index...
finalizing index lists...
-lookup cache used 2430/65536 hits=13693 misses=2547
+lookup cache used 2453/65536 hits=13822 misses=2571
finished...
diff --git a/html/classop_1_1_face_extractor-members.html b/html/classop_1_1_face_extractor-members.html
index b7f3b17a..8aae54c5 100644
--- a/html/classop_1_1_face_extractor-members.html
+++ b/html/classop_1_1_face_extractor-members.html
@@ -112,10 +112,11 @@ $(document).ready(function(){initNavTree('classop_1_1_face_extractor.html','');}
This is the complete list of members for op::FaceExtractor, including all inherited members.
- | FaceExtractor(const Point< int > &netInputSize, const Point< int > &netOutputSize, const std::string &modelFolder, const int gpuId) | op::FaceExtractor | explicit |
+ | FaceExtractor(const Point< int > &netInputSize, const Point< int > &netOutputSize, const std::string &modelFolder, const int gpuId, const std::vector< HeatMapType > &heatMapTypes={}, const ScaleMode heatMapScale=ScaleMode::ZeroToOne) | op::FaceExtractor | explicit |
| forwardPass(const std::vector< Rectangle< float >> &faceRectangles, const cv::Mat &cvInputData, const float scaleInputToOutput) | op::FaceExtractor | |
| getFaceKeypoints() const | op::FaceExtractor | |
- | initializationOnThread() | op::FaceExtractor | |
+ | getHeatMaps() const | op::FaceExtractor | |
+ | initializationOnThread() | op::FaceExtractor | |
diff --git a/html/classop_1_1_face_extractor.html b/html/classop_1_1_face_extractor.html
index 05fba7c3..e1183b38 100644
--- a/html/classop_1_1_face_extractor.html
+++ b/html/classop_1_1_face_extractor.html
@@ -117,17 +117,19 @@ $(document).ready(function(){initNavTree('classop_1_1_face_extractor.html','');}
|
-| | FaceExtractor (const Point< int > &netInputSize, const Point< int > &netOutputSize, const std::string &modelFolder, const int gpuId) |
-| |
+| | FaceExtractor (const Point< int > &netInputSize, const Point< int > &netOutputSize, const std::string &modelFolder, const int gpuId, const std::vector< HeatMapType > &heatMapTypes={}, const ScaleMode heatMapScale=ScaleMode::ZeroToOne) |
+| |
| void | initializationOnThread () |
| |
| void | forwardPass (const std::vector< Rectangle< float >> &faceRectangles, const cv::Mat &cvInputData, const float scaleInputToOutput) |
| |
| Array< float > | getFaceKeypoints () const |
| |
+| Array< float > | getHeatMaps () const |
+| |
-
+
@@ -156,7 +158,19 @@ Public Member Functions
|
|
const int |
- gpuId |
+ gpuId, |
+
+
+ |
+ |
+ const std::vector< HeatMapType > & |
+ heatMapTypes = {}, |
+
+
+ |
+ |
+ const ScaleMode |
+ heatMapScale = ScaleMode::ZeroToOne |
|
@@ -219,6 +233,21 @@ Public Member Functions
+
+
+
+
+
+
+
+ | Array<float> op::FaceExtractor::getHeatMaps |
+ ( |
+ | ) |
+ const |
+
+
+
+
diff --git a/html/classop_1_1_face_extractor.js b/html/classop_1_1_face_extractor.js
index 3f47e434..9f87f447 100644
--- a/html/classop_1_1_face_extractor.js
+++ b/html/classop_1_1_face_extractor.js
@@ -1,7 +1,8 @@
var classop_1_1_face_extractor =
[
- [ "FaceExtractor", "classop_1_1_face_extractor.html#aa2c31df663d2bb2e4d965833bb8270a8", null ],
+ [ "FaceExtractor", "classop_1_1_face_extractor.html#a04b4cd08bc5cbba132be73368890af02", null ],
[ "forwardPass", "classop_1_1_face_extractor.html#a557850c549e3972916e833f9ffea99e1", null ],
[ "getFaceKeypoints", "classop_1_1_face_extractor.html#a13d7920f4029a4aa6d63b3609956c475", null ],
+ [ "getHeatMaps", "classop_1_1_face_extractor.html#af326457ed8977781fe48f1086ac5efee", null ],
[ "initializationOnThread", "classop_1_1_face_extractor.html#a2692c0040bb8c0b84a84d195194d037a", null ]
];
\ No newline at end of file
diff --git a/html/classop_1_1_hand_extractor-members.html b/html/classop_1_1_hand_extractor-members.html
index e2046b68..7211efb0 100644
--- a/html/classop_1_1_hand_extractor-members.html
+++ b/html/classop_1_1_hand_extractor-members.html
@@ -114,8 +114,9 @@ $(document).ready(function(){initNavTree('classop_1_1_hand_extractor.html','');}
| forwardPass(const std::vector< std::array< Rectangle< float >, 2 >> handRectangles, const cv::Mat &cvInputData, const float scaleInputToOutput) | op::HandExtractor | |
| getHandKeypoints() const | op::HandExtractor | |
- | HandExtractor(const Point< int > &netInputSize, const Point< int > &netOutputSize, const std::string &modelFolder, const int gpuId, const unsigned short numberScales=1, const float rangeScales=0.4f) | op::HandExtractor | explicit |
- | initializationOnThread() | op::HandExtractor | |
+ | getHeatMaps() const | op::HandExtractor | |
+ | HandExtractor(const Point< int > &netInputSize, const Point< int > &netOutputSize, const std::string &modelFolder, const int gpuId, const unsigned short numberScales=1, const float rangeScales=0.4f, const std::vector< HeatMapType > &heatMapTypes={}, const ScaleMode heatMapScale=ScaleMode::ZeroToOne) | op::HandExtractor | explicit |
+ | initializationOnThread() | op::HandExtractor | |
diff --git a/html/classop_1_1_hand_extractor.html b/html/classop_1_1_hand_extractor.html
index af70e92b..7667c0b2 100644
--- a/html/classop_1_1_hand_extractor.html
+++ b/html/classop_1_1_hand_extractor.html
@@ -117,19 +117,21 @@ $(document).ready(function(){initNavTree('classop_1_1_hand_extractor.html','');}
|
-| | HandExtractor (const Point< int > &netInputSize, const Point< int > &netOutputSize, const std::string &modelFolder, const int gpuId, const unsigned short numberScales=1, const float rangeScales=0.4f) |
-| |
+| | HandExtractor (const Point< int > &netInputSize, const Point< int > &netOutputSize, const std::string &modelFolder, const int gpuId, const unsigned short numberScales=1, const float rangeScales=0.4f, const std::vector< HeatMapType > &heatMapTypes={}, const ScaleMode heatMapScale=ScaleMode::ZeroToOne) |
+| |
| void | initializationOnThread () |
| |
| void | forwardPass (const std::vector< std::array< Rectangle< float >, 2 >> handRectangles, const cv::Mat &cvInputData, const float scaleInputToOutput) |
| |
| std::array< Array< float >, 2 > | getHandKeypoints () const |
| |
+| std::array< Array< float >, 2 > | getHeatMaps () const |
+| |
Hand keypoint extractor class.
-
+
@@ -170,7 +172,19 @@ Public Member Functions
|
|
const float |
- rangeScales = 0.4f |
+ rangeScales = 0.4f, |
+
+
+ |
+ |
+ const std::vector< HeatMapType > & |
+ heatMapTypes = {}, |
+
+
+ |
+ |
+ const ScaleMode |
+ heatMapScale = ScaleMode::ZeroToOne |
|
@@ -256,6 +270,21 @@ Public Member Functions
This function returns the hand keypoins. VERY IMPORTANT: use getHandKeypoints().clone() if the keypoints are going to be edited in a different thread.
- Returns
- And std::array with all the left hand keypoints (index 0) and all the right ones (index 1). Each Array<float> follows the pose structure, i.e. the first dimension corresponds to all the people in the image, the second to each specific keypoint, and the third one to (x, y, score).
+
+
+
+
+
+
+
+ | std::array<Array<float>, 2> op::HandExtractor::getHeatMaps |
+ ( |
+ | ) |
+ const |
+
+
+
+
diff --git a/html/classop_1_1_hand_extractor.js b/html/classop_1_1_hand_extractor.js
index be53bbe6..e34e3851 100644
--- a/html/classop_1_1_hand_extractor.js
+++ b/html/classop_1_1_hand_extractor.js
@@ -1,7 +1,8 @@
var classop_1_1_hand_extractor =
[
- [ "HandExtractor", "classop_1_1_hand_extractor.html#a7ec55995554e5f617b56145c8c432558", null ],
+ [ "HandExtractor", "classop_1_1_hand_extractor.html#a0a86a06bdf506b28497c8b7f7469bb31", null ],
[ "forwardPass", "classop_1_1_hand_extractor.html#a0f76c1b4cf6770bbb889259204510877", null ],
[ "getHandKeypoints", "classop_1_1_hand_extractor.html#a322a1c3a0ab7abaf0c697246af9309cc", null ],
+ [ "getHeatMaps", "classop_1_1_hand_extractor.html#af5ce8cd602820921de3ec3f676aacf0d", null ],
[ "initializationOnThread", "classop_1_1_hand_extractor.html#aa5592a468cfdcfdd687d6f9d465d3eda", null ]
];
\ No newline at end of file
diff --git a/html/datum_8hpp_source.html b/html/datum_8hpp_source.html
index 89a0ffff..7b60cd94 100644
--- a/html/datum_8hpp_source.html
+++ b/html/datum_8hpp_source.html
@@ -138,89 +138,95 @@ $(document).ready(function(){initNavTree('datum_8hpp_source.html','');});
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
- 178 return id < datum.
id;
-
-
-
- 187 return id > datum.
id;
-
-
-
- 196 return id <= datum.
id;
-
-
-
- 205 return id >= datum.
id;
-
-
-
- 214 return id == datum.
id;
-
-
-
- 223 return id != datum.
id;
-
-
-
-
- 228 #endif // OPENPOSE_CORE_DATUM_HPP
-float scaleNetToOutput
Definition: datum.hpp:103
+
+
+
+
+
+
+
+
+
+
+
+ 192 return id < datum.
id;
+
+
+
+ 201 return id > datum.
id;
+
+
+
+ 210 return id <= datum.
id;
+
+
+
+ 219 return id >= datum.
id;
+
+
+
+ 228 return id == datum.
id;
+
+
+
+ 237 return id != datum.
id;
+
+
+
+
+ 242 #endif // OPENPOSE_CORE_DATUM_HPP
+float scaleNetToOutput
Definition: datum.hpp:117
std::string name
Definition: datum.hpp:19
-bool operator==(const Datum &datum) const
Definition: datum.hpp:212
+bool operator==(const Datum &datum) const
Definition: datum.hpp:226
Array< float > poseHeatMaps
Definition: datum.hpp:69
-std::pair< int, std::string > elementRendered
Definition: datum.hpp:107
-bool operator!=(const Datum &datum) const
Definition: datum.hpp:221
+std::array< Array< float >, 2 > handHeatMaps
Definition: datum.hpp:112
+std::pair< int, std::string > elementRendered
Definition: datum.hpp:121
+bool operator!=(const Datum &datum) const
Definition: datum.hpp:235
Array< float > inputNetData
Definition: datum.hpp:34
std::vector< Rectangle< float > > faceRectangles
Definition: datum.hpp:76
Array< float > poseKeypoints
Definition: datum.hpp:59
-std::vector< std::array< Rectangle< float >, 2 > > handRectangles
Definition: datum.hpp:90
-bool operator<(const Datum &datum) const
Definition: datum.hpp:176
+std::vector< std::array< Rectangle< float >, 2 > > handRectangles
Definition: datum.hpp:97
+bool operator<(const Datum &datum) const
Definition: datum.hpp:190
Array< float > outputData
Definition: datum.hpp:42
-std::array< Array< float >, 2 > handKeypoints
Definition: datum.hpp:98
-std::vector< float > scaleRatios
Definition: datum.hpp:105
+std::array< Array< float >, 2 > handKeypoints
Definition: datum.hpp:105
+std::vector< float > scaleRatios
Definition: datum.hpp:119
+Array< float > faceHeatMaps
Definition: datum.hpp:90
cv::Mat cvInputData
Definition: datum.hpp:26
cv::Mat cvOutputData
Definition: datum.hpp:50
Array< float > faceKeypoints
Definition: datum.hpp:83
unsigned long long id
Definition: datum.hpp:17
-float scaleInputToOutput
Definition: datum.hpp:101
-bool operator<=(const Datum &datum) const
Definition: datum.hpp:194
+float scaleInputToOutput
Definition: datum.hpp:115
+bool operator<=(const Datum &datum) const
Definition: datum.hpp:208
#define OP_API
Definition: macros.hpp:5
-bool operator>(const Datum &datum) const
Definition: datum.hpp:185
-bool operator>=(const Datum &datum) const
Definition: datum.hpp:203
+bool operator>(const Datum &datum) const
Definition: datum.hpp:199
+bool operator>=(const Datum &datum) const
Definition: datum.hpp:217
diff --git a/html/face_extractor_8hpp.html b/html/face_extractor_8hpp.html
index 3859d3cd..71392965 100644
--- a/html/face_extractor_8hpp.html
+++ b/html/face_extractor_8hpp.html
@@ -117,6 +117,7 @@ $(document).ready(function(){initNavTree('face_extractor_8hpp.html','');});
#include <openpose/core/maximumCaffe.hpp>
#include <openpose/core/net.hpp>
#include <openpose/core/resizeAndMergeCaffe.hpp>
+#include <openpose/core/enumClasses.hpp>
Go to the source code of this file.
diff --git a/html/face_extractor_8hpp_source.html b/html/face_extractor_8hpp_source.html
index 03dfdcf7..b17bcad9 100644
--- a/html/face_extractor_8hpp_source.html
+++ b/html/face_extractor_8hpp_source.html
@@ -117,51 +117,64 @@ $(document).ready(function(){initNavTree('face_extractor_8hpp_source.html','');}
-
-
-
-
-
-
-
-
- 19 void initializationOnThread();
-
- 21 void forwardPass(
const std::vector<
Rectangle<float>>& faceRectangles,
const cv::Mat& cvInputData,
const float scaleInputToOutput);
+
+
+
+
+
+
+
+
+ 19 const std::string& modelFolder,
const int gpuId,
+ 20 const std::vector<HeatMapType>& heatMapTypes = {},
+
-
+ 23 void initializationOnThread();
-
-
-
- 28 std::shared_ptr<Net> spNet;
- 29 std::shared_ptr<ResizeAndMergeCaffe<float>> spResizeAndMergeCaffe;
- 30 std::shared_ptr<MaximumCaffe<float>> spMaximumCaffe;
-
-
-
- 34 boost::shared_ptr<caffe::Blob<float>> spCaffeNetOutputBlob;
- 35 std::shared_ptr<caffe::Blob<float>> spHeatMapsBlob;
- 36 std::shared_ptr<caffe::Blob<float>> spPeaksBlob;
- 37 std::thread::id mThreadId;
-
- 39 void checkThread()
const;
-
-
-
-
-
- 45 #endif // OPENPOSE_FACE_FACE_EXTRACTOR_HPP
+ 25 void forwardPass(
const std::vector<
Rectangle<float>>& faceRectangles,
const cv::Mat& cvInputData,
+ 26 const float scaleInputToOutput);
+
+
+
+
+
+
+
+ 34 std::shared_ptr<Net> spNet;
+ 35 std::shared_ptr<ResizeAndMergeCaffe<float>> spResizeAndMergeCaffe;
+ 36 std::shared_ptr<MaximumCaffe<float>> spMaximumCaffe;
+
+
+
+
+ 41 const std::vector<HeatMapType> mHeatMapTypes;
+
+
+ 44 boost::shared_ptr<caffe::Blob<float>> spCaffeNetOutputBlob;
+ 45 std::shared_ptr<caffe::Blob<float>> spHeatMapsBlob;
+ 46 std::shared_ptr<caffe::Blob<float>> spPeaksBlob;
+ 47 std::thread::id mThreadId;
+
+ 49 void checkThread()
const;
+
+
+
+
+
+ 55 #endif // OPENPOSE_FACE_FACE_EXTRACTOR_HPP
#define DELETE_COPY(className)
Definition: macros.hpp:25
+
+ScaleMode
Definition: enumClasses.hpp:6
Definition: rectangle.hpp:10
#define OP_API
Definition: macros.hpp:5
-
+
+
diff --git a/html/functions_f.html b/html/functions_f.html
index d9a484d4..c8579a2c 100644
--- a/html/functions_f.html
+++ b/html/functions_f.html
@@ -153,11 +153,14 @@ $(document).ready(function(){initNavTree('functions_f.html','');});
: op::FaceDetector
FaceExtractor()
-: op::FaceExtractor
+: op::FaceExtractor
FaceGpuRenderer()
: op::FaceGpuRenderer
+faceHeatMaps
+: op::Datum
+
faceKeypoints
: op::Datum
diff --git a/html/functions_func_f.html b/html/functions_func_f.html
index 7c657ac2..90d13aab 100644
--- a/html/functions_func_f.html
+++ b/html/functions_func_f.html
@@ -149,7 +149,7 @@ $(document).ready(function(){initNavTree('functions_func_f.html','');});
: op::FaceDetector
FaceExtractor()
-: op::FaceExtractor
+: op::FaceExtractor
FaceGpuRenderer()
: op::FaceGpuRenderer
diff --git a/html/functions_func_g.html b/html/functions_func_g.html
index 150a71e9..99b0cb97 100644
--- a/html/functions_func_g.html
+++ b/html/functions_func_g.html
@@ -196,7 +196,9 @@ $(document).ready(function(){initNavTree('functions_func_g.html','');});
: op::PoseExtractor
getHeatMaps()
-: op::PoseExtractor
+: op::FaceExtractor
+, op::HandExtractor
+, op::PoseExtractor
getInputDataCpuPtr()
: op::Net
@@ -245,7 +247,7 @@ $(document).ready(function(){initNavTree('functions_func_g.html','');});
: op::Renderer
getSize()
-: op::Array< T >
+: op::Array< T >
getTWorkersSize()
: op::SubThread< TDatums, TWorker >
@@ -254,7 +256,7 @@ $(document).ready(function(){initNavTree('functions_func_g.html','');});
: op::Producer
getVolume()
-: op::Array< T >
+: op::Array< T >
GpuRenderer()
: op::GpuRenderer
diff --git a/html/functions_func_h.html b/html/functions_func_h.html
index 65fbb63e..ed475f88 100644
--- a/html/functions_func_h.html
+++ b/html/functions_func_h.html
@@ -152,7 +152,7 @@ $(document).ready(function(){initNavTree('functions_func_h.html','');});
: op::HandDetectorFromTxt
HandExtractor()
-: op::HandExtractor
+: op::HandExtractor
HandGpuRenderer()
: op::HandGpuRenderer
diff --git a/html/functions_g.html b/html/functions_g.html
index 0a8460f7..a9b2bf06 100644
--- a/html/functions_g.html
+++ b/html/functions_g.html
@@ -200,7 +200,9 @@ $(document).ready(function(){initNavTree('functions_g.html','');});
: op::PoseExtractor
getHeatMaps()
-: op::PoseExtractor
+: op::FaceExtractor
+, op::HandExtractor
+, op::PoseExtractor
getInputDataCpuPtr()
: op::Net
diff --git a/html/functions_h.html b/html/functions_h.html
index b5e811ee..2eda6828 100644
--- a/html/functions_h.html
+++ b/html/functions_h.html
@@ -156,11 +156,14 @@ $(document).ready(function(){initNavTree('functions_h.html','');});
: op::HandDetectorFromTxt
HandExtractor()
-: op::HandExtractor
+: op::HandExtractor
HandGpuRenderer()
: op::HandGpuRenderer
+handHeatMaps
+: op::Datum
+
handKeypoints
: op::Datum
diff --git a/html/functions_vars.html b/html/functions_vars.html
index 84cded8a..f359e6ca 100644
--- a/html/functions_vars.html
+++ b/html/functions_vars.html
@@ -195,6 +195,9 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
- f -
+- faceHeatMaps
+: op::Datum
+
- faceKeypoints
: op::Datum
@@ -236,6 +239,9 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
- h -
+- handHeatMaps
+: op::Datum
+
- handKeypoints
: op::Datum
diff --git a/html/hand_extractor_8hpp.html b/html/hand_extractor_8hpp.html
index cbe6e048..31ae5fd7 100644
--- a/html/hand_extractor_8hpp.html
+++ b/html/hand_extractor_8hpp.html
@@ -113,6 +113,7 @@ $(document).ready(function(){initNavTree('hand_extractor_8hpp.html','');});
#include <atomic>
#include <thread>
#include <opencv2/core/core.hpp>
+
#include <openpose/core/enumClasses.hpp>
#include <openpose/core/common.hpp>
#include <openpose/core/maximumCaffe.hpp>
#include <openpose/core/net.hpp>
diff --git a/html/hand_extractor_8hpp_source.html b/html/hand_extractor_8hpp_source.html
index 0ea90e83..99045bf3 100644
--- a/html/hand_extractor_8hpp_source.html
+++ b/html/hand_extractor_8hpp_source.html
@@ -113,60 +113,75 @@ $(document).ready(function(){initNavTree('hand_extractor_8hpp_source.html','');}
6 #include <opencv2/core/core.hpp>
-
-
-
-
-
-
-
-
-
-
-
-
30 const unsigned short numberScales = 1,
const float rangeScales = 0.4f);
-
-
36 void initializationOnThread();
-
-
47 void forwardPass(
const std::vector<std::array<
Rectangle<float>, 2>> handRectangles,
const cv::Mat& cvInputData,
-
48 const float scaleInputToOutput);
-
-
57 std::array<Array<float>, 2> getHandKeypoints()
const;
-
-
-
-
61 const std::pair<unsigned short, float> mMultiScaleNumberAndRange;
-
-
63 std::shared_ptr<Net> spNet;
-
64 std::shared_ptr<ResizeAndMergeCaffe<float>> spResizeAndMergeCaffe;
-
65 std::shared_ptr<MaximumCaffe<float>> spMaximumCaffe;
-
-
67 std::array<Array<float>, 2> mHandKeypoints;
-
-
69 boost::shared_ptr<caffe::Blob<float>> spCaffeNetOutputBlob;
-
70 std::shared_ptr<caffe::Blob<float>> spHeatMapsBlob;
-
71 std::shared_ptr<caffe::Blob<float>> spPeaksBlob;
-
72 std::thread::id mThreadId;
-
-
74 void checkThread()
const;
-
-
76 void detectHandKeypoints(
Array<float>& handCurrent,
const float scaleInputToOutput,
const int person,
const cv::Mat& affineMatrix);
-
-
-
-
-
-
82 #endif // OPENPOSE_HAND_HAND_EXTRACTOR_HPP
+
+
+
+
+
+
+
+
+
+
+
+
+
32 const std::string& modelFolder,
const int gpuId,
+
33 const unsigned short numberScales = 1,
const float rangeScales = 0.4f,
+
34 const std::vector<HeatMapType>& heatMapTypes = {},
+
+
+
41 void initializationOnThread();
+
+
54 void forwardPass(
const std::vector<std::array<
Rectangle<float>, 2>> handRectangles,
const cv::Mat& cvInputData,
+
55 const float scaleInputToOutput);
+
+
64 std::array<Array<float>, 2> getHandKeypoints()
const;
+
+
66 std::array<Array<float>, 2> getHeatMaps()
const;
+
+
+
69 const std::pair<unsigned short, float> mMultiScaleNumberAndRange;
+
+
71 std::shared_ptr<Net> spNet;
+
72 std::shared_ptr<ResizeAndMergeCaffe<float>> spResizeAndMergeCaffe;
+
73 std::shared_ptr<MaximumCaffe<float>> spMaximumCaffe;
+
+
75 std::array<Array<float>, 2> mHandKeypoints;
+
+
+
78 const std::vector<HeatMapType> mHeatMapTypes;
+
79 std::array<Array<float>, 2> mHeatMaps;
+
+
81 boost::shared_ptr<caffe::Blob<float>> spCaffeNetOutputBlob;
+
82 std::shared_ptr<caffe::Blob<float>> spHeatMapsBlob;
+
83 std::shared_ptr<caffe::Blob<float>> spPeaksBlob;
+
84 std::thread::id mThreadId;
+
+
86 void checkThread()
const;
+
+
88 void detectHandKeypoints(
Array<float>& handCurrent,
const float scaleInputToOutput,
const int person,
+
89 const cv::Mat& affineMatrix);
+
+
+
+
+
+
+
+
97 #endif // OPENPOSE_HAND_HAND_EXTRACTOR_HPP
#define DELETE_COPY(className)
Definition: macros.hpp:25
-
Definition: handExtractor.hpp:17
+
Definition: handExtractor.hpp:18
+
+
ScaleMode
Definition: enumClasses.hpp:6
Definition: rectangle.hpp:10
#define OP_API
Definition: macros.hpp:5
+
diff --git a/html/namespaceop.html b/html/namespaceop.html
index dead42d5..0eb0bf72 100644
--- a/html/namespaceop.html
+++ b/html/namespaceop.html
@@ -2110,54 +2110,6 @@ template<typename TPointerContainer >
-
-
-
-
-
-
-
- | op::COMPILE_TEMPLATE_DATUM |
- ( |
- WHandExtractor |
- | ) |
- |
-
-
-
-
-
-
-
-
-
-
-
- | op::COMPILE_TEMPLATE_DATUM |
- ( |
- WFaceExtractor |
- | ) |
- |
-
-
-
-
-
-
-
-
-
-
-
- | op::COMPILE_TEMPLATE_DATUM |
- ( |
- WHeatMapSaver |
- | ) |
- |
-
-
-
-
@@ -2206,6 +2158,22 @@ template<typename TPointerContainer >
+
+
+
+
+
+
+
+ | op::COMPILE_TEMPLATE_DATUM |
+ ( |
+ WFaceExtractor |
+ | ) |
+ |
+
+
+
+
@@ -2222,6 +2190,38 @@ template<typename TPointerContainer >
+
+
+
+
+
+
+
+ | op::COMPILE_TEMPLATE_DATUM |
+ ( |
+ WHeatMapSaver |
+ | ) |
+ |
+
+
+
+
+
+
+
+
+
+
+
+ | op::COMPILE_TEMPLATE_DATUM |
+ ( |
+ WHandExtractor |
+ | ) |
+ |
+
+
+
+
diff --git a/html/navtree.js b/html/navtree.js
index 4c6dd4c9..388db4e9 100644
--- a/html/navtree.js
+++ b/html/navtree.js
@@ -35,11 +35,11 @@ var NAVTREE =
var NAVTREEINDEX =
[
"annotated.html",
-"classop_1_1_queue.html#ae2b845322940bfc89b6342137d8ac372",
-"classop_1_1_worker_consumer.html#a26cf5c40df363d94d603fce92a5b69eb",
-"hand_detector_8hpp_source.html",
-"rectangle_8hpp.html",
-"w_gui_8hpp.html"
+"classop_1_1_queue.html",
+"classop_1_1_worker.html#ae45ac828f6e8f6055203c224e50f145b",
+"hand_cpu_renderer_8hpp_source.html",
+"queue_base_8hpp.html",
+"w_face_renderer_8hpp_source.html"
];
var SYNCONMSG = 'click to disable panel synchronisation';
diff --git a/html/navtreeindex0.js b/html/navtreeindex0.js
index 8b0d4389..498971cc 100644
--- a/html/navtreeindex0.js
+++ b/html/navtreeindex0.js
@@ -77,10 +77,11 @@ var NAVTREEINDEX0 =
"classop_1_1_face_detector.html#a9f72a1ac7276849dc9cbc141eedf96ca":[1,0,0,16,1],
"classop_1_1_face_detector.html#adfeab6977c93b7bef66c1dfbcf6f8150":[1,0,0,16,0],
"classop_1_1_face_extractor.html":[1,0,0,17],
+"classop_1_1_face_extractor.html#a04b4cd08bc5cbba132be73368890af02":[1,0,0,17,0],
"classop_1_1_face_extractor.html#a13d7920f4029a4aa6d63b3609956c475":[1,0,0,17,2],
-"classop_1_1_face_extractor.html#a2692c0040bb8c0b84a84d195194d037a":[1,0,0,17,3],
+"classop_1_1_face_extractor.html#a2692c0040bb8c0b84a84d195194d037a":[1,0,0,17,4],
"classop_1_1_face_extractor.html#a557850c549e3972916e833f9ffea99e1":[1,0,0,17,1],
-"classop_1_1_face_extractor.html#aa2c31df663d2bb2e4d965833bb8270a8":[1,0,0,17,0],
+"classop_1_1_face_extractor.html#af326457ed8977781fe48f1086ac5efee":[1,0,0,17,3],
"classop_1_1_face_gpu_renderer.html":[1,0,0,18],
"classop_1_1_face_gpu_renderer.html#a01a207676e3ec1a8718b8717cd999f53":[1,0,0,18,1],
"classop_1_1_face_gpu_renderer.html#a344b4f1d256d6ad805273eb8ba29cde1":[1,0,0,18,0],
@@ -127,10 +128,11 @@ var NAVTREEINDEX0 =
"classop_1_1_hand_detector_from_txt.html#a1e6ba23fa1486e92a3bdca36b2e86d22":[1,0,0,46,1],
"classop_1_1_hand_detector_from_txt.html#a94ef5e925c5d25b181c56ae79bb1eed2":[1,0,0,46,0],
"classop_1_1_hand_extractor.html":[1,0,0,47],
+"classop_1_1_hand_extractor.html#a0a86a06bdf506b28497c8b7f7469bb31":[1,0,0,47,0],
"classop_1_1_hand_extractor.html#a0f76c1b4cf6770bbb889259204510877":[1,0,0,47,1],
"classop_1_1_hand_extractor.html#a322a1c3a0ab7abaf0c697246af9309cc":[1,0,0,47,2],
-"classop_1_1_hand_extractor.html#a7ec55995554e5f617b56145c8c432558":[1,0,0,47,0],
-"classop_1_1_hand_extractor.html#aa5592a468cfdcfdd687d6f9d465d3eda":[1,0,0,47,3],
+"classop_1_1_hand_extractor.html#aa5592a468cfdcfdd687d6f9d465d3eda":[1,0,0,47,4],
+"classop_1_1_hand_extractor.html#af5ce8cd602820921de3ec3f676aacf0d":[1,0,0,47,3],
"classop_1_1_hand_gpu_renderer.html":[1,0,0,48],
"classop_1_1_hand_gpu_renderer.html#a0489f10ddc9e37e87084ebf9a5138f3a":[1,0,0,48,2],
"classop_1_1_hand_gpu_renderer.html#a0d2f742b995a6f34e414f9731db847d5":[1,0,0,48,0],
@@ -247,7 +249,5 @@ var NAVTREEINDEX0 =
"classop_1_1_producer.html#ac72a751759ae8b5a0a99552580f7fbad":[1,0,0,65,10],
"classop_1_1_producer.html#adc348105fca58f18e39aa3439e2d627b":[1,0,0,65,7],
"classop_1_1_producer.html#afad3eadd16cca0de2c2be8b083c0d56d":[1,0,0,65,12],
-"classop_1_1_profiler.html":[1,0,0,89],
-"classop_1_1_queue.html":[1,0,0,71],
-"classop_1_1_queue.html#ab28fa9f713d05e55e5ba1510b34d57f0":[1,0,0,71,1]
+"classop_1_1_profiler.html":[1,0,0,89]
};
diff --git a/html/navtreeindex1.js b/html/navtreeindex1.js
index 0d3f2f9a..e8c25140 100644
--- a/html/navtreeindex1.js
+++ b/html/navtreeindex1.js
@@ -1,5 +1,7 @@
var NAVTREEINDEX1 =
{
+"classop_1_1_queue.html":[1,0,0,71],
+"classop_1_1_queue.html#ab28fa9f713d05e55e5ba1510b34d57f0":[1,0,0,71,1],
"classop_1_1_queue.html#ae2b845322940bfc89b6342137d8ac372":[1,0,0,71,0],
"classop_1_1_queue_base.html":[1,0,0,72],
"classop_1_1_queue_base.html#a04f7160c199f90b8f8e91ddfd40e92fb":[1,0,0,72,27],
@@ -247,7 +249,5 @@ var NAVTREEINDEX1 =
"classop_1_1_worker.html#a6ebe180098e00ac062a1bb31d462df60":[1,0,0,81,1],
"classop_1_1_worker.html#a9acadd6df7af03b31b9e354ae815f781":[1,0,0,81,7],
"classop_1_1_worker.html#aa5be4df9d4d8302728c653870e7d2a23":[1,0,0,81,3],
-"classop_1_1_worker.html#ad689b232d68f3b3e0b41f9e219b01134":[1,0,0,81,6],
-"classop_1_1_worker.html#ae45ac828f6e8f6055203c224e50f145b":[1,0,0,81,5],
-"classop_1_1_worker_consumer.html":[1,0,0,82]
+"classop_1_1_worker.html#ad689b232d68f3b3e0b41f9e219b01134":[1,0,0,81,6]
};
diff --git a/html/navtreeindex2.js b/html/navtreeindex2.js
index a775a8b1..2d04ff04 100644
--- a/html/navtreeindex2.js
+++ b/html/navtreeindex2.js
@@ -1,5 +1,7 @@
var NAVTREEINDEX2 =
{
+"classop_1_1_worker.html#ae45ac828f6e8f6055203c224e50f145b":[1,0,0,81,5],
+"classop_1_1_worker_consumer.html":[1,0,0,82],
"classop_1_1_worker_consumer.html#a26cf5c40df363d94d603fce92a5b69eb":[1,0,0,82,2],
"classop_1_1_worker_consumer.html#a7383747b3bdc6ac79e6f9afbf2c28d27":[1,0,0,82,1],
"classop_1_1_worker_consumer.html#a9aaa75f194df6b3ed4994c8e95aa0ab5":[1,0,0,82,0],
@@ -247,7 +249,5 @@ var NAVTREEINDEX2 =
"gui_info_adder_8hpp_source.html":[2,0,0,0,4,3],
"hand_2headers_8hpp.html":[2,0,0,0,5,7],
"hand_2headers_8hpp_source.html":[2,0,0,0,5,7],
-"hand_cpu_renderer_8hpp.html":[2,0,0,0,5,0],
-"hand_cpu_renderer_8hpp_source.html":[2,0,0,0,5,0],
-"hand_detector_8hpp.html":[2,0,0,0,5,1]
+"hand_cpu_renderer_8hpp.html":[2,0,0,0,5,0]
};
diff --git a/html/navtreeindex3.js b/html/navtreeindex3.js
index 01fc32af..6e22787b 100644
--- a/html/navtreeindex3.js
+++ b/html/navtreeindex3.js
@@ -1,5 +1,7 @@
var NAVTREEINDEX3 =
{
+"hand_cpu_renderer_8hpp_source.html":[2,0,0,0,5,0],
+"hand_detector_8hpp.html":[2,0,0,0,5,1],
"hand_detector_8hpp_source.html":[2,0,0,0,5,1],
"hand_detector_from_txt_8hpp.html":[2,0,0,0,5,2],
"hand_detector_from_txt_8hpp_source.html":[2,0,0,0,5,2],
@@ -101,8 +103,8 @@ var NAVTREEINDEX3 =
"namespacemembers_x.html":[0,1,0,21],
"namespacemembers_y.html":[0,1,0,22],
"namespacemembers_z.html":[0,1,0,23],
-"namespaceop.html":[1,0,0],
"namespaceop.html":[0,0,0],
+"namespaceop.html":[1,0,0],
"namespaces.html":[0,0],
"net_8hpp.html":[2,0,0,0,0,12],
"net_8hpp_source.html":[2,0,0,0,0,12],
@@ -247,7 +249,5 @@ var NAVTREEINDEX3 =
"profiler_8hpp_source.html":[2,0,0,0,9,11],
"queue_8hpp.html":[2,0,0,0,8,3],
"queue_8hpp.html#aa7f93261bd6d87f86c45e933607a0678":[2,0,0,0,8,3,1],
-"queue_8hpp_source.html":[2,0,0,0,8,3],
-"queue_base_8hpp.html":[2,0,0,0,8,4],
-"queue_base_8hpp_source.html":[2,0,0,0,8,4]
+"queue_8hpp_source.html":[2,0,0,0,8,3]
};
diff --git a/html/navtreeindex4.js b/html/navtreeindex4.js
index e19091da..7de58002 100644
--- a/html/navtreeindex4.js
+++ b/html/navtreeindex4.js
@@ -1,5 +1,7 @@
var NAVTREEINDEX4 =
{
+"queue_base_8hpp.html":[2,0,0,0,8,4],
+"queue_base_8hpp_source.html":[2,0,0,0,8,4],
"rectangle_8hpp.html":[2,0,0,0,0,18],
"rectangle_8hpp.html#a7cd131c9ddd8f3987508e89e0881b9e0":[2,0,0,0,0,18,1],
"rectangle_8hpp_source.html":[2,0,0,0,0,18],
@@ -35,25 +37,25 @@ var NAVTREEINDEX4 =
"string_8hpp.html#ae80a103d8a4308bc435342b3d31404c8":[2,0,0,0,9,12,1],
"string_8hpp_source.html":[2,0,0,0,9,12],
"structop_1_1_datum.html":[1,0,0,3],
-"structop_1_1_datum.html#a0b105b52ce12f2689c7aa26708117254":[1,0,0,3,21],
+"structop_1_1_datum.html#a0b105b52ce12f2689c7aa26708117254":[1,0,0,3,23],
"structop_1_1_datum.html#a0b2c8ccac37be088524cc7c24a502c7b":[1,0,0,3,13],
-"structop_1_1_datum.html#a0b2f6955a1751fc79b107789272effad":[1,0,0,3,17],
+"structop_1_1_datum.html#a0b2f6955a1751fc79b107789272effad":[1,0,0,3,18],
"structop_1_1_datum.html#a0d1f1c3d3494386e2d652268f6e17b5a":[1,0,0,3,14],
"structop_1_1_datum.html#a16b968aec06e9b904751216402972e74":[1,0,0,3,3],
"structop_1_1_datum.html#a24f3bfcb0ffffeb5742eb1530bc9e367":[1,0,0,3,9],
"structop_1_1_datum.html#a2d4940d8cb12d95b8588cd0280f6524c":[1,0,0,3,2],
-"structop_1_1_datum.html#a2db6ffa73c5cc87a277a6d7a1bac33e2":[1,0,0,3,28],
+"structop_1_1_datum.html#a2db6ffa73c5cc87a277a6d7a1bac33e2":[1,0,0,3,30],
"structop_1_1_datum.html#a32ad4b55b76a6eadf5cbd07f644f656c":[1,0,0,3,7],
"structop_1_1_datum.html#a35212700ef2a2ac290a6666e2993a192":[1,0,0,3,15],
-"structop_1_1_datum.html#a42b953c082f479eddc527da9a3a4cc75":[1,0,0,3,23],
+"structop_1_1_datum.html#a42b953c082f479eddc527da9a3a4cc75":[1,0,0,3,25],
"structop_1_1_datum.html#a42f9aef848c6335c5a81cad374319f0b":[1,0,0,3,1],
-"structop_1_1_datum.html#a4eec45a7f4b8bc017736b41096327043":[1,0,0,3,27],
-"structop_1_1_datum.html#a52d75e3273490624414f0602785bb608":[1,0,0,3,19],
-"structop_1_1_datum.html#a5429e97e0ab9b0e2209a3947af668381":[1,0,0,3,24],
-"structop_1_1_datum.html#a59d455dbddc50d700809c5e102c40d4e":[1,0,0,3,18],
-"structop_1_1_datum.html#a6546c11ca264fdeab4a5f21104f8a8b2":[1,0,0,3,26],
-"structop_1_1_datum.html#a65deddd49d0fbca81f367198fc600015":[1,0,0,3,20],
-"structop_1_1_datum.html#a6d629b1f6f7b958fe4cf2ef4cdf57c5b":[1,0,0,3,25],
+"structop_1_1_datum.html#a4eec45a7f4b8bc017736b41096327043":[1,0,0,3,29],
+"structop_1_1_datum.html#a52d75e3273490624414f0602785bb608":[1,0,0,3,21],
+"structop_1_1_datum.html#a5429e97e0ab9b0e2209a3947af668381":[1,0,0,3,26],
+"structop_1_1_datum.html#a59d455dbddc50d700809c5e102c40d4e":[1,0,0,3,20],
+"structop_1_1_datum.html#a6546c11ca264fdeab4a5f21104f8a8b2":[1,0,0,3,28],
+"structop_1_1_datum.html#a65deddd49d0fbca81f367198fc600015":[1,0,0,3,22],
+"structop_1_1_datum.html#a6d629b1f6f7b958fe4cf2ef4cdf57c5b":[1,0,0,3,27],
"structop_1_1_datum.html#a72c75834671aebe44705738fb5efc3c5":[1,0,0,3,0],
"structop_1_1_datum.html#a72ee10bf507aea368cfd3dba3dd38cb5":[1,0,0,3,8],
"structop_1_1_datum.html#a731a7179ac03f831019441981455282e":[1,0,0,3,10],
@@ -61,8 +63,10 @@ var NAVTREEINDEX4 =
"structop_1_1_datum.html#aab9997004b6b761267f8ce312b8048e9":[1,0,0,3,5],
"structop_1_1_datum.html#aae900e3c8101ab5acce9fc5e4d50830a":[1,0,0,3,6],
"structop_1_1_datum.html#acdf94a3ee6504d8b70afffa997d52d4b":[1,0,0,3,11],
-"structop_1_1_datum.html#ae6adcdacea12a9cfa445cf0cac1985b0":[1,0,0,3,22],
-"structop_1_1_datum.html#aebd19bf50725a5cd87de1efd96f6ebfe":[1,0,0,3,16],
+"structop_1_1_datum.html#ae0c0f33a6b75c7f47e11112dd33f23c1":[1,0,0,3,16],
+"structop_1_1_datum.html#ae6adcdacea12a9cfa445cf0cac1985b0":[1,0,0,3,24],
+"structop_1_1_datum.html#aebd19bf50725a5cd87de1efd96f6ebfe":[1,0,0,3,17],
+"structop_1_1_datum.html#aef6c478313691ab5101664c1df55aa58":[1,0,0,3,19],
"structop_1_1_datum.html#afcdbf1d87e08761d952d19ef6a8ace10":[1,0,0,3,12],
"structop_1_1_point.html":[1,0,0,8],
"structop_1_1_point.html#a0374ab7bcd19af664a6c01328346d238":[1,0,0,8,24],
@@ -245,9 +249,5 @@ var NAVTREEINDEX4 =
"w_face_extractor_8hpp.html#ac610051ddb4703c80e6ee73f77f6df8a":[2,0,0,0,2,9,1],
"w_face_extractor_8hpp_source.html":[2,0,0,0,2,9],
"w_face_renderer_8hpp.html":[2,0,0,0,2,10],
-"w_face_renderer_8hpp.html#af42afa53c725d556c14928b2603883e3":[2,0,0,0,2,10,1],
-"w_face_renderer_8hpp_source.html":[2,0,0,0,2,10],
-"w_face_saver_8hpp.html":[2,0,0,0,3,12],
-"w_face_saver_8hpp.html#a57c4f3ada0db4882a4106d4dedf08012":[2,0,0,0,3,12,1],
-"w_face_saver_8hpp_source.html":[2,0,0,0,3,12]
+"w_face_renderer_8hpp.html#af42afa53c725d556c14928b2603883e3":[2,0,0,0,2,10,1]
};
diff --git a/html/navtreeindex5.js b/html/navtreeindex5.js
index 06f7abfe..a0bcd964 100644
--- a/html/navtreeindex5.js
+++ b/html/navtreeindex5.js
@@ -1,5 +1,9 @@
var NAVTREEINDEX5 =
{
+"w_face_renderer_8hpp_source.html":[2,0,0,0,2,10],
+"w_face_saver_8hpp.html":[2,0,0,0,3,12],
+"w_face_saver_8hpp.html#a57c4f3ada0db4882a4106d4dedf08012":[2,0,0,0,3,12,1],
+"w_face_saver_8hpp_source.html":[2,0,0,0,3,12],
"w_gui_8hpp.html":[2,0,0,0,4,5],
"w_gui_8hpp.html#ade3b2e4b105242a3cf41def3def1691d":[2,0,0,0,4,5,1],
"w_gui_8hpp_source.html":[2,0,0,0,4,5],
diff --git a/html/search/all_5.js b/html/search/all_5.js
index bc85bde6..2f594585 100644
--- a/html/search/all_5.js
+++ b/html/search/all_5.js
@@ -11,18 +11,19 @@ var searchData=
['face_5fpairs_5frender_5fgpu',['FACE_PAIRS_RENDER_GPU',['../face_parameters_8hpp.html#a7e2f64c1349d6a881c6ceb49757e099a',1,'faceParameters.hpp']]],
['face_5fprototxt',['FACE_PROTOTXT',['../namespaceop.html#a4d07868d77fb11253b413ed579e04c22',1,'op']]],
['face_5ftrained_5fmodel',['FACE_TRAINED_MODEL',['../namespaceop.html#abd0ef2306478c3295283e7f1b59e3aff',1,'op']]],
- ['facecpurenderer',['FaceCpuRenderer',['../classop_1_1_face_cpu_renderer.html',1,'op']]],
['facecpurenderer',['FaceCpuRenderer',['../classop_1_1_face_cpu_renderer.html#afb0dcfff75c4a89d5971d7b0bbd0b51b',1,'op::FaceCpuRenderer']]],
+ ['facecpurenderer',['FaceCpuRenderer',['../classop_1_1_face_cpu_renderer.html',1,'op']]],
['facecpurenderer_2ehpp',['faceCpuRenderer.hpp',['../face_cpu_renderer_8hpp.html',1,'']]],
['facedetector',['FaceDetector',['../classop_1_1_face_detector.html',1,'op']]],
['facedetector',['FaceDetector',['../classop_1_1_face_detector.html#adfeab6977c93b7bef66c1dfbcf6f8150',1,'op::FaceDetector']]],
['facedetector_2ehpp',['faceDetector.hpp',['../face_detector_8hpp.html',1,'']]],
- ['faceextractor',['FaceExtractor',['../classop_1_1_face_extractor.html#aa2c31df663d2bb2e4d965833bb8270a8',1,'op::FaceExtractor']]],
+ ['faceextractor',['FaceExtractor',['../classop_1_1_face_extractor.html#a04b4cd08bc5cbba132be73368890af02',1,'op::FaceExtractor']]],
['faceextractor',['FaceExtractor',['../classop_1_1_face_extractor.html',1,'op']]],
['faceextractor_2ehpp',['faceExtractor.hpp',['../face_extractor_8hpp.html',1,'']]],
['facegpurenderer',['FaceGpuRenderer',['../classop_1_1_face_gpu_renderer.html',1,'op']]],
['facegpurenderer',['FaceGpuRenderer',['../classop_1_1_face_gpu_renderer.html#a344b4f1d256d6ad805273eb8ba29cde1',1,'op::FaceGpuRenderer']]],
['facegpurenderer_2ehpp',['faceGpuRenderer.hpp',['../face_gpu_renderer_8hpp.html',1,'']]],
+ ['faceheatmaps',['faceHeatMaps',['../structop_1_1_datum.html#ae0c0f33a6b75c7f47e11112dd33f23c1',1,'op::Datum']]],
['facekeypoints',['faceKeypoints',['../structop_1_1_datum.html#aebd19bf50725a5cd87de1efd96f6ebfe',1,'op::Datum']]],
['faceparameters_2ehpp',['faceParameters.hpp',['../face_parameters_8hpp.html',1,'']]],
['facerectangles',['faceRectangles',['../structop_1_1_datum.html#a0b2f6955a1751fc79b107789272effad',1,'op::Datum']]],
@@ -55,8 +56,8 @@ var searchData=
['formatasdirectory',['formatAsDirectory',['../namespaceop.html#ab38ea91ef7b7dad700d8e4a4654d48f5',1,'op']]],
['formattocvmat',['formatToCvMat',['../classop_1_1_op_output_to_cv_mat.html#a478daa5915f60a6a962f29fcb64aaac5',1,'op::OpOutputToCvMat']]],
['forwardpass',['forwardPass',['../classop_1_1_net.html#ac8edfe73a20fd3d5e548160dffbd0b71',1,'op::Net::forwardPass()'],['../classop_1_1_face_extractor.html#a557850c549e3972916e833f9ffea99e1',1,'op::FaceExtractor::forwardPass()'],['../classop_1_1_hand_extractor.html#a0f76c1b4cf6770bbb889259204510877',1,'op::HandExtractor::forwardPass()'],['../classop_1_1_pose_extractor.html#af14676f867643ca2ccc666d8757d694c',1,'op::PoseExtractor::forwardPass()']]],
- ['framedisplayer',['FrameDisplayer',['../classop_1_1_frame_displayer.html#a3b81422440197c14b6ae58e40a95b4ec',1,'op::FrameDisplayer']]],
['framedisplayer',['FrameDisplayer',['../classop_1_1_frame_displayer.html',1,'op']]],
+ ['framedisplayer',['FrameDisplayer',['../classop_1_1_frame_displayer.html#a3b81422440197c14b6ae58e40a95b4ec',1,'op::FrameDisplayer']]],
['framedisplayer_2ehpp',['frameDisplayer.hpp',['../frame_displayer_8hpp.html',1,'']]],
['framefirst',['frameFirst',['../structop_1_1_wrapper_struct_input.html#acc72b8efe09ec3888823ed5680a19fe4',1,'op::WrapperStructInput']]],
['frameflip',['frameFlip',['../structop_1_1_wrapper_struct_input.html#a5ee9722814fe2b5a695511cabd12b613',1,'op::WrapperStructInput']]],
diff --git a/html/search/all_6.js b/html/search/all_6.js
index 4b9c67b9..0769b459 100644
--- a/html/search/all_6.js
+++ b/html/search/all_6.js
@@ -22,7 +22,7 @@ var searchData=
['gethandkeypoints',['getHandKeypoints',['../classop_1_1_hand_extractor.html#a322a1c3a0ab7abaf0c697246af9309cc',1,'op::HandExtractor']]],
['getheatmapcpuconstptr',['getHeatMapCpuConstPtr',['../classop_1_1_pose_extractor.html#a0bb5cf37e5b93e347e355be126d22ead',1,'op::PoseExtractor']]],
['getheatmapgpuconstptr',['getHeatMapGpuConstPtr',['../classop_1_1_pose_extractor.html#a0b895e3e582bd504b531ba525ed77430',1,'op::PoseExtractor']]],
- ['getheatmaps',['getHeatMaps',['../classop_1_1_pose_extractor.html#a1f91723c5d541a2872637a1510da76e6',1,'op::PoseExtractor']]],
+ ['getheatmaps',['getHeatMaps',['../classop_1_1_face_extractor.html#af326457ed8977781fe48f1086ac5efee',1,'op::FaceExtractor::getHeatMaps()'],['../classop_1_1_hand_extractor.html#af5ce8cd602820921de3ec3f676aacf0d',1,'op::HandExtractor::getHeatMaps()'],['../classop_1_1_pose_extractor.html#a1f91723c5d541a2872637a1510da76e6',1,'op::PoseExtractor::getHeatMaps()']]],
['getinputdatacpuptr',['getInputDataCpuPtr',['../classop_1_1_net.html#a042324a660661408830caf85cfe17603',1,'op::Net']]],
['getinputdatagpuptr',['getInputDataGpuPtr',['../classop_1_1_net.html#a6e39824e84be05c9942523e48e7cff55',1,'op::Net']]],
['getisrunningsharedptr',['getIsRunningSharedPtr',['../classop_1_1_thread_manager.html#a48ea53b3de4d09c84db18e2c31ce1be1',1,'op::ThreadManager']]],
diff --git a/html/search/all_7.js b/html/search/all_7.js
index a0a6b6ee..c3c615f3 100644
--- a/html/search/all_7.js
+++ b/html/search/all_7.js
@@ -21,31 +21,32 @@ var searchData=
['handdetectorfromtxt',['HandDetectorFromTxt',['../classop_1_1_hand_detector_from_txt.html#a94ef5e925c5d25b181c56ae79bb1eed2',1,'op::HandDetectorFromTxt']]],
['handdetectorfromtxt_2ehpp',['handDetectorFromTxt.hpp',['../hand_detector_from_txt_8hpp.html',1,'']]],
['handextractor',['HandExtractor',['../classop_1_1_hand_extractor.html',1,'op']]],
- ['handextractor',['HandExtractor',['../classop_1_1_hand_extractor.html#a7ec55995554e5f617b56145c8c432558',1,'op::HandExtractor']]],
+ ['handextractor',['HandExtractor',['../classop_1_1_hand_extractor.html#a0a86a06bdf506b28497c8b7f7469bb31',1,'op::HandExtractor']]],
['handextractor_2ehpp',['handExtractor.hpp',['../hand_extractor_8hpp.html',1,'']]],
['handgpurenderer',['HandGpuRenderer',['../classop_1_1_hand_gpu_renderer.html#a0d2f742b995a6f34e414f9731db847d5',1,'op::HandGpuRenderer']]],
['handgpurenderer',['HandGpuRenderer',['../classop_1_1_hand_gpu_renderer.html',1,'op']]],
['handgpurenderer_2ehpp',['handGpuRenderer.hpp',['../hand_gpu_renderer_8hpp.html',1,'']]],
+ ['handheatmaps',['handHeatMaps',['../structop_1_1_datum.html#aef6c478313691ab5101664c1df55aa58',1,'op::Datum']]],
['handkeypoints',['handKeypoints',['../structop_1_1_datum.html#a59d455dbddc50d700809c5e102c40d4e',1,'op::Datum']]],
['handparameters_2ehpp',['handParameters.hpp',['../hand_parameters_8hpp.html',1,'']]],
['handrectangles',['handRectangles',['../structop_1_1_datum.html#a52d75e3273490624414f0602785bb608',1,'op::Datum']]],
['handrenderer',['HandRenderer',['../classop_1_1_hand_renderer.html',1,'op']]],
['handrenderer_2ehpp',['handRenderer.hpp',['../hand_renderer_8hpp.html',1,'']]],
- ['headers_2ehpp',['headers.hpp',['../experimental_2producer_2headers_8hpp.html',1,'']]],
- ['headers_2ehpp',['headers.hpp',['../pose_2headers_8hpp.html',1,'']]],
- ['headers_2ehpp',['headers.hpp',['../core_2headers_8hpp.html',1,'']]],
- ['headers_2ehpp',['headers.hpp',['../experimental_2headers_8hpp.html',1,'']]],
- ['headers_2ehpp',['headers.hpp',['../thread_2headers_8hpp.html',1,'']]],
- ['headers_2ehpp',['headers.hpp',['../utilities_2headers_8hpp.html',1,'']]],
- ['headers_2ehpp',['headers.hpp',['../producer_2headers_8hpp.html',1,'']]],
- ['headers_2ehpp',['headers.hpp',['../headers_8hpp.html',1,'']]],
- ['headers_2ehpp',['headers.hpp',['../wrapper_2headers_8hpp.html',1,'']]],
['headers_2ehpp',['headers.hpp',['../filestream_2headers_8hpp.html',1,'']]],
+ ['headers_2ehpp',['headers.hpp',['../pose_2headers_8hpp.html',1,'']]],
+ ['headers_2ehpp',['headers.hpp',['../producer_2headers_8hpp.html',1,'']]],
+ ['headers_2ehpp',['headers.hpp',['../experimental_2headers_8hpp.html',1,'']]],
+ ['headers_2ehpp',['headers.hpp',['../utilities_2headers_8hpp.html',1,'']]],
['headers_2ehpp',['headers.hpp',['../face_2headers_8hpp.html',1,'']]],
+ ['headers_2ehpp',['headers.hpp',['../experimental_2producer_2headers_8hpp.html',1,'']]],
+ ['headers_2ehpp',['headers.hpp',['../headers_8hpp.html',1,'']]],
+ ['headers_2ehpp',['headers.hpp',['../core_2headers_8hpp.html',1,'']]],
['headers_2ehpp',['headers.hpp',['../gui_2headers_8hpp.html',1,'']]],
+ ['headers_2ehpp',['headers.hpp',['../wrapper_2headers_8hpp.html',1,'']]],
+ ['headers_2ehpp',['headers.hpp',['../thread_2headers_8hpp.html',1,'']]],
['headers_2ehpp',['headers.hpp',['../hand_2headers_8hpp.html',1,'']]],
- ['heatmapsaver',['HeatMapSaver',['../classop_1_1_heat_map_saver.html#aa6a339b70a9535a018584b93c932b12d',1,'op::HeatMapSaver']]],
['heatmapsaver',['HeatMapSaver',['../classop_1_1_heat_map_saver.html',1,'op']]],
+ ['heatmapsaver',['HeatMapSaver',['../classop_1_1_heat_map_saver.html#aa6a339b70a9535a018584b93c932b12d',1,'op::HeatMapSaver']]],
['heatmapsaver_2ehpp',['heatMapSaver.hpp',['../heat_map_saver_8hpp.html',1,'']]],
['heatmapscale',['heatMapScale',['../structop_1_1_wrapper_struct_pose.html#abeb9ae450a7b37e76075c8dca64b3617',1,'op::WrapperStructPose']]],
['heatmaptype',['HeatMapType',['../namespaceop.html#a1c3dbc214e7552f7ef9cc753ee97226b',1,'op']]],
diff --git a/html/search/functions_5.js b/html/search/functions_5.js
index 1493b219..18e43aa7 100644
--- a/html/search/functions_5.js
+++ b/html/search/functions_5.js
@@ -2,7 +2,7 @@ var searchData=
[
['facecpurenderer',['FaceCpuRenderer',['../classop_1_1_face_cpu_renderer.html#afb0dcfff75c4a89d5971d7b0bbd0b51b',1,'op::FaceCpuRenderer']]],
['facedetector',['FaceDetector',['../classop_1_1_face_detector.html#adfeab6977c93b7bef66c1dfbcf6f8150',1,'op::FaceDetector']]],
- ['faceextractor',['FaceExtractor',['../classop_1_1_face_extractor.html#aa2c31df663d2bb2e4d965833bb8270a8',1,'op::FaceExtractor']]],
+ ['faceextractor',['FaceExtractor',['../classop_1_1_face_extractor.html#a04b4cd08bc5cbba132be73368890af02',1,'op::FaceExtractor']]],
['facegpurenderer',['FaceGpuRenderer',['../classop_1_1_face_gpu_renderer.html#a344b4f1d256d6ad805273eb8ba29cde1',1,'op::FaceGpuRenderer']]],
['fastmax',['fastMax',['../namespaceop.html#a9f4b99449c0c73e2c89ee1a1eff007c7',1,'op']]],
['fastmin',['fastMin',['../namespaceop.html#a6e1d1f90ef06cc7af576fdaad4b4e320',1,'op']]],
diff --git a/html/search/functions_6.js b/html/search/functions_6.js
index e15643f9..3fc03a9f 100644
--- a/html/search/functions_6.js
+++ b/html/search/functions_6.js
@@ -22,7 +22,7 @@ var searchData=
['gethandkeypoints',['getHandKeypoints',['../classop_1_1_hand_extractor.html#a322a1c3a0ab7abaf0c697246af9309cc',1,'op::HandExtractor']]],
['getheatmapcpuconstptr',['getHeatMapCpuConstPtr',['../classop_1_1_pose_extractor.html#a0bb5cf37e5b93e347e355be126d22ead',1,'op::PoseExtractor']]],
['getheatmapgpuconstptr',['getHeatMapGpuConstPtr',['../classop_1_1_pose_extractor.html#a0b895e3e582bd504b531ba525ed77430',1,'op::PoseExtractor']]],
- ['getheatmaps',['getHeatMaps',['../classop_1_1_pose_extractor.html#a1f91723c5d541a2872637a1510da76e6',1,'op::PoseExtractor']]],
+ ['getheatmaps',['getHeatMaps',['../classop_1_1_face_extractor.html#af326457ed8977781fe48f1086ac5efee',1,'op::FaceExtractor::getHeatMaps()'],['../classop_1_1_hand_extractor.html#af5ce8cd602820921de3ec3f676aacf0d',1,'op::HandExtractor::getHeatMaps()'],['../classop_1_1_pose_extractor.html#a1f91723c5d541a2872637a1510da76e6',1,'op::PoseExtractor::getHeatMaps()']]],
['getinputdatacpuptr',['getInputDataCpuPtr',['../classop_1_1_net.html#a042324a660661408830caf85cfe17603',1,'op::Net']]],
['getinputdatagpuptr',['getInputDataGpuPtr',['../classop_1_1_net.html#a6e39824e84be05c9942523e48e7cff55',1,'op::Net']]],
['getisrunningsharedptr',['getIsRunningSharedPtr',['../classop_1_1_thread_manager.html#a48ea53b3de4d09c84db18e2c31ce1be1',1,'op::ThreadManager']]],
diff --git a/html/search/functions_7.js b/html/search/functions_7.js
index f0ccfd63..646a24a7 100644
--- a/html/search/functions_7.js
+++ b/html/search/functions_7.js
@@ -3,7 +3,7 @@ var searchData=
['handcpurenderer',['HandCpuRenderer',['../classop_1_1_hand_cpu_renderer.html#a3145d482c0378288e7ba3e42091a56c2',1,'op::HandCpuRenderer']]],
['handdetector',['HandDetector',['../classop_1_1_hand_detector.html#a20b127dd7b51afcd336d1f16b40ee0b1',1,'op::HandDetector']]],
['handdetectorfromtxt',['HandDetectorFromTxt',['../classop_1_1_hand_detector_from_txt.html#a94ef5e925c5d25b181c56ae79bb1eed2',1,'op::HandDetectorFromTxt']]],
- ['handextractor',['HandExtractor',['../classop_1_1_hand_extractor.html#a7ec55995554e5f617b56145c8c432558',1,'op::HandExtractor']]],
+ ['handextractor',['HandExtractor',['../classop_1_1_hand_extractor.html#a0a86a06bdf506b28497c8b7f7469bb31',1,'op::HandExtractor']]],
['handgpurenderer',['HandGpuRenderer',['../classop_1_1_hand_gpu_renderer.html#a0d2f742b995a6f34e414f9731db847d5',1,'op::HandGpuRenderer']]],
['heatmapsaver',['HeatMapSaver',['../classop_1_1_heat_map_saver.html#aa6a339b70a9535a018584b93c932b12d',1,'op::HeatMapSaver']]]
];
diff --git a/html/search/variables_5.js b/html/search/variables_5.js
index da2e0005..eb984d5e 100644
--- a/html/search/variables_5.js
+++ b/html/search/variables_5.js
@@ -9,6 +9,7 @@ var searchData=
['face_5fpairs_5frender',['FACE_PAIRS_RENDER',['../namespaceop.html#a1245f62cf98c4ee7591dfc8807ef355d',1,'op']]],
['face_5fprototxt',['FACE_PROTOTXT',['../namespaceop.html#a4d07868d77fb11253b413ed579e04c22',1,'op']]],
['face_5ftrained_5fmodel',['FACE_TRAINED_MODEL',['../namespaceop.html#abd0ef2306478c3295283e7f1b59e3aff',1,'op']]],
+ ['faceheatmaps',['faceHeatMaps',['../structop_1_1_datum.html#ae0c0f33a6b75c7f47e11112dd33f23c1',1,'op::Datum']]],
['facekeypoints',['faceKeypoints',['../structop_1_1_datum.html#aebd19bf50725a5cd87de1efd96f6ebfe',1,'op::Datum']]],
['facerectangles',['faceRectangles',['../structop_1_1_datum.html#a0b2f6955a1751fc79b107789272effad',1,'op::Datum']]],
['framefirst',['frameFirst',['../structop_1_1_wrapper_struct_input.html#acc72b8efe09ec3888823ed5680a19fe4',1,'op::WrapperStructInput']]],
diff --git a/html/search/variables_7.js b/html/search/variables_7.js
index 3052cfc4..4a41c1b9 100644
--- a/html/search/variables_7.js
+++ b/html/search/variables_7.js
@@ -9,6 +9,7 @@ var searchData=
['hand_5fpairs_5frender',['HAND_PAIRS_RENDER',['../namespaceop.html#a335d707e98d311d39d9a9dab0e325391',1,'op']]],
['hand_5fprototxt',['HAND_PROTOTXT',['../namespaceop.html#a3fe70bd1eacdd78aef3344c83533ffc7',1,'op']]],
['hand_5ftrained_5fmodel',['HAND_TRAINED_MODEL',['../namespaceop.html#ac13af59538bcb8a1709f20010681d1c7',1,'op']]],
+ ['handheatmaps',['handHeatMaps',['../structop_1_1_datum.html#aef6c478313691ab5101664c1df55aa58',1,'op::Datum']]],
['handkeypoints',['handKeypoints',['../structop_1_1_datum.html#a59d455dbddc50d700809c5e102c40d4e',1,'op::Datum']]],
['handrectangles',['handRectangles',['../structop_1_1_datum.html#a52d75e3273490624414f0602785bb608',1,'op::Datum']]],
['heatmapscale',['heatMapScale',['../structop_1_1_wrapper_struct_pose.html#abeb9ae450a7b37e76075c8dca64b3617',1,'op::WrapperStructPose']]],
diff --git a/html/structop_1_1_datum-members.html b/html/structop_1_1_datum-members.html
index 17088617..57e1fd2f 100644
--- a/html/structop_1_1_datum-members.html
+++ b/html/structop_1_1_datum-members.html
@@ -119,8 +119,10 @@ $(document).ready(function(){initNavTree('structop_1_1_datum.html','');});
| Datum(const Datum &datum) | op::Datum | |
| Datum(Datum &&datum) | op::Datum | |
| elementRendered | op::Datum | |
- | faceKeypoints | op::Datum | |
- | faceRectangles | op::Datum | |
+ | faceHeatMaps | op::Datum | |
+ | faceKeypoints | op::Datum | |
+ | faceRectangles | op::Datum | |
+ | handHeatMaps | op::Datum | |
| handKeypoints | op::Datum | |
| handRectangles | op::Datum | |
| id | op::Datum | |
diff --git a/html/structop_1_1_datum.html b/html/structop_1_1_datum.html
index 9c84fcc8..5007108b 100644
--- a/html/structop_1_1_datum.html
+++ b/html/structop_1_1_datum.html
@@ -167,11 +167,15 @@ Public Attributes
| |
| Array< float > | faceKeypoints |
| |
+| Array< float > | faceHeatMaps |
+| |
std::vector< std::array
< Rectangle< float >, 2 > > | handRectangles |
| |
| std::array< Array< float >, 2 > | handKeypoints |
| |
+| std::array< Array< float >, 2 > | handHeatMaps |
+| |
| float | scaleInputToOutput |
| |
| float | scaleNetToOutput |
@@ -574,6 +578,19 @@ Public Attributes
Pair with the element key id POSE_BODY_PART_MAPPING on pose/poseParameters.hpp and its mapped value (e.g. 1 and "Neck").
+
+
+
+
+
+
+
+ | Array<float> op::Datum::faceHeatMaps |
+
+
+
+
Face pose heatmaps (face parts and/or background) for the whole image. Analogous of bodyHeatMaps applied to face. However, there is no PAFs and the size is different. Size: #people x #face parts (70) x output_net_height x output_net_width
+
@@ -600,6 +617,19 @@ Public Attributes
Face detection locations (x,y,width,height) for each person in the image. It is resized to cvInputData.size(). Size: #people
+
+
+
+
+
+
+
+ | std::array<Array<float>, 2> op::Datum::handHeatMaps |
+
+
+
+
Face pose heatmaps (hand parts and/or background) for the whole image. Analogous of faceHeatMaps applied to face. Size each Array: #people x #hand parts (21) x output_net_height x output_net_width
+
@@ -611,7 +641,7 @@ Public Attributes
-
Hand keypoints (x,y,score) locations for each person in the image. It has been resized to the same resolution as poseKeypoints. handKeypoints[0] corresponds to left hands, and handKeypoints[1] to right ones. Size: #people x #hand parts (21) x 3 ((x,y) coordinates + score)
+
Hand keypoints (x,y,score) locations for each person in the image. It has been resized to the same resolution as poseKeypoints. handKeypoints[0] corresponds to left hands, and handKeypoints[1] to right ones. Size each Array: #people x #hand parts (21) x 3 ((x,y) coordinates + score)
diff --git a/html/structop_1_1_datum.js b/html/structop_1_1_datum.js
index f0755845..f8ec076e 100644
--- a/html/structop_1_1_datum.js
+++ b/html/structop_1_1_datum.js
@@ -16,8 +16,10 @@ var structop_1_1_datum =
[ "cvInputData", "structop_1_1_datum.html#a0b2c8ccac37be088524cc7c24a502c7b", null ],
[ "cvOutputData", "structop_1_1_datum.html#a0d1f1c3d3494386e2d652268f6e17b5a", null ],
[ "elementRendered", "structop_1_1_datum.html#a35212700ef2a2ac290a6666e2993a192", null ],
+ [ "faceHeatMaps", "structop_1_1_datum.html#ae0c0f33a6b75c7f47e11112dd33f23c1", null ],
[ "faceKeypoints", "structop_1_1_datum.html#aebd19bf50725a5cd87de1efd96f6ebfe", null ],
[ "faceRectangles", "structop_1_1_datum.html#a0b2f6955a1751fc79b107789272effad", null ],
+ [ "handHeatMaps", "structop_1_1_datum.html#aef6c478313691ab5101664c1df55aa58", null ],
[ "handKeypoints", "structop_1_1_datum.html#a59d455dbddc50d700809c5e102c40d4e", null ],
[ "handRectangles", "structop_1_1_datum.html#a52d75e3273490624414f0602785bb608", null ],
[ "id", "structop_1_1_datum.html#a65deddd49d0fbca81f367198fc600015", null ],
diff --git a/html/w_face_extractor_8hpp_source.html b/html/w_face_extractor_8hpp_source.html
index c01753f0..c177b088 100644
--- a/html/w_face_extractor_8hpp_source.html
+++ b/html/w_face_extractor_8hpp_source.html
@@ -168,27 +168,28 @@ $(document).ready(function(){initNavTree('w_face_extractor_8hpp_source.html','')
59 for (
auto& tDatum : *tDatums)
61 spFaceExtractor->forwardPass(tDatum.faceRectangles, tDatum.cvInputData, tDatum.scaleInputToOutput);
- 62 tDatum.faceKeypoints = spFaceExtractor->getFaceKeypoints();
-
-
-
-
-
-
-
-
- 71 catch (
const std::exception& e)
-
-
-
- 75 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
-
-
-
- 82 #endif // OPENPOSE_FACE_W_FACE_DETECTOR_HPP
+ 62 tDatum.faceHeatMaps = spFaceExtractor->getHeatMaps().clone();
+ 63 tDatum.faceKeypoints = spFaceExtractor->getFaceKeypoints().clone();
+
+
+
+
+
+
+
+
+ 72 catch (
const std::exception& e)
+
+
+
+ 76 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+
+
+
+ 83 #endif // OPENPOSE_FACE_W_FACE_DETECTOR_HPP
diff --git a/html/w_hand_extractor_8hpp_source.html b/html/w_hand_extractor_8hpp_source.html
index d9cbfd0b..59f61251 100644
--- a/html/w_hand_extractor_8hpp_source.html
+++ b/html/w_hand_extractor_8hpp_source.html
@@ -168,27 +168,31 @@ $(document).ready(function(){initNavTree('w_hand_extractor_8hpp_source.html','')
59 for (
auto& tDatum : *tDatums)
61 spHandExtractor->forwardPass(tDatum.handRectangles, tDatum.cvInputData, tDatum.scaleInputToOutput);
- 62 tDatum.handKeypoints = spHandExtractor->getHandKeypoints();
-
-
-
-
-
-
-
-
- 71 catch (
const std::exception& e)
-
-
-
- 75 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
-
-
-
- 82 #endif // OPENPOSE_HAND_W_HAND_EXTRACTOR_HPP
+ 62 for (
auto hand = 0 ; hand < 2 ; hand++)
+
+ 64 tDatum.handHeatMaps[hand] = spHandExtractor->getHeatMaps()[hand].clone();
+ 65 tDatum.handKeypoints[hand] = spHandExtractor->getHandKeypoints()[hand].clone();
+
+
+
+
+
+
+
+
+
+ 75 catch (
const std::exception& e)
+
+
+
+ 79 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+
+
+
+ 86 #endif // OPENPOSE_HAND_W_HAND_EXTRACTOR_HPP
WHandExtractor(const std::shared_ptr< HandExtractor > &handExtractor)
Definition: wHandExtractor.hpp:36
diff --git a/html/w_heat_map_saver_8hpp_source.html b/html/w_heat_map_saver_8hpp_source.html
index 5f4917da..6d5971b9 100644
--- a/html/w_heat_map_saver_8hpp_source.html
+++ b/html/w_heat_map_saver_8hpp_source.html
@@ -165,30 +165,32 @@ $(document).ready(function(){initNavTree('w_heat_map_saver_8hpp_source.html','')
58 auto& tDatumsNoPtr = *tDatums;
-
+
60 std::vector<Array<float>> poseHeatMaps(tDatumsNoPtr.size());
61 for (
auto i = 0u; i < tDatumsNoPtr.size(); i++)
62 poseHeatMaps[i] = tDatumsNoPtr[i].poseHeatMaps;
- 63 const auto fileName = (!tDatumsNoPtr[0].name.empty() ? tDatumsNoPtr[0].name : std::to_string(tDatumsNoPtr[0].
id));
- 64 spHeatMapSaver->saveHeatMaps(poseHeatMaps, fileName);
-
-
-
-
-
-
-
- 72 catch (
const std::exception& e)
-
-
- 75 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
-
-
-
- 82 #endif // OPENPOSE_FILESTREAM_W_HEAT_MAP_SAVER_HPP
+ 63 const auto fileName = (!tDatumsNoPtr[0].name.empty()
+ 64 ? tDatumsNoPtr[0].name : std::to_string(tDatumsNoPtr[0].
id)) +
"_pose_heatmaps";
+ 65 spHeatMapSaver->saveHeatMaps(poseHeatMaps, fileName);
+
+
+
+
+
+
+
+
+ 74 catch (
const std::exception& e)
+
+
+ 77 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+
+
+
+ 84 #endif // OPENPOSE_FILESTREAM_W_HEAT_MAP_SAVER_HPP
Definition: workerConsumer.hpp:10
void initializationOnThread()
Definition: wHeatMapSaver.hpp:42
diff --git a/html/w_pose_extractor_8hpp_source.html b/html/w_pose_extractor_8hpp_source.html
index 98f982e8..220277ac 100644
--- a/html/w_pose_extractor_8hpp_source.html
+++ b/html/w_pose_extractor_8hpp_source.html
@@ -168,8 +168,8 @@ $(document).ready(function(){initNavTree('w_pose_extractor_8hpp_source.html','')
59 for (
auto& tDatum : *tDatums)
61 spPoseExtractor->forwardPass(tDatum.inputNetData,
Point<int>{tDatum.cvInputData.cols, tDatum.cvInputData.rows}, tDatum.scaleRatios);
- 62 tDatum.poseHeatMaps = spPoseExtractor->getHeatMaps();
- 63 tDatum.poseKeypoints = spPoseExtractor->getPoseKeypoints();
+ 62 tDatum.poseHeatMaps = spPoseExtractor->getHeatMaps().clone();
+ 63 tDatum.poseKeypoints = spPoseExtractor->getPoseKeypoints().clone();
64 tDatum.scaleNetToOutput = spPoseExtractor->getScaleNetToOutput();
diff --git a/html/wrapper_8hpp_source.html b/html/wrapper_8hpp_source.html
index 5f2dfcaf..25a5ebb5 100644
--- a/html/wrapper_8hpp_source.html
+++ b/html/wrapper_8hpp_source.html
@@ -632,7 +632,7 @@ $(document).ready(function(){initNavTree('wrapper_8hpp_source.html','');});
666 const auto netOutputSize = wrapperStructFace.
netInputSize;
667 const auto faceExtractor = std::make_shared<FaceExtractor>(
-
+
@@ -657,581 +657,582 @@ $(document).ready(function(){initNavTree('wrapper_8hpp_source.html','');});
691 const auto netOutputSize = wrapperStructHand.
netInputSize;
692 const auto handExtractor = std::make_shared<HandExtractor>(
-
-
-
-
-
-
-
-
-
-
- 704 if (!poseGpuRenderers.empty())
- 705 for (
auto i = 0u; i < spWPoses.size(); i++)
-
-
-
-
-
-
-
-
-
- 715 const auto faceRenderer = std::make_shared<FaceCpuRenderer>(wrapperStructFace.
renderThreshold,
-
-
-
-
-
-
-
-
- 724 for (
auto i = 0u; i < spWPoses.size(); i++)
-
-
- 727 const auto faceRenderer = std::make_shared<FaceGpuRenderer>(wrapperStructFace.
renderThreshold,
-
-
-
- 731 if (!poseGpuRenderers.empty())
-
- 733 const bool isLastRenderer = !renderHandGpu;
- 734 const auto renderer = std::static_pointer_cast<
PoseGpuRenderer>(poseGpuRenderers.at(i));
-
-
-
-
-
-
-
-
- 743 error(
"Unknown RenderMode.", __LINE__, __FUNCTION__, __FILE__);
-
-
-
-
-
-
-
-
-
- 753 const auto handRenderer = std::make_shared<HandCpuRenderer>(wrapperStructHand.
renderThreshold,
-
-
-
-
-
-
-
-
- 762 for (
auto i = 0u; i < spWPoses.size(); i++)
-
-
- 765 const auto handRenderer = std::make_shared<HandGpuRenderer>(wrapperStructHand.
renderThreshold,
-
-
-
- 769 if (!poseGpuRenderers.empty())
-
- 771 const bool isLastRenderer =
true;
- 772 const auto renderer = std::static_pointer_cast<
PoseGpuRenderer>(poseGpuRenderers.at(i));
-
-
-
-
-
-
-
-
- 781 error(
"Unknown RenderMode.", __LINE__, __FUNCTION__, __FILE__);
-
-
-
- 785 mPostProcessingWs.clear();
-
- 787 if (spWPoses.size() > 1u)
-
-
-
-
- 792 mPostProcessingWs = mergeWorkers(mPostProcessingWs, cpuRenderers);
- 793 const auto opOutputToCvMat = std::make_shared<OpOutputToCvMat>();
-
-
-
-
-
-
-
- 801 (finalOutputSize == producerSize || finalOutputSize.x <= 0 || finalOutputSize.y <= 0))
-
-
- 804 && finalOutputSize == poseNetOutputSize))
-
-
- 807 auto keypointScaler = std::make_shared<KeypointScaler>(wrapperStructPose.
keypointScale);
-
-
-
-
-
- 813 if (!writeKeypointCleaned.empty())
-
- 815 const auto keypointSaver = std::make_shared<KeypointSaver>(writeKeypointCleaned,
-
-
- 818 if (wrapperStructFace.
enable)
-
- 820 if (wrapperStructHand.
enable)
-
-
-
- 824 if (!writeKeypointJsonCleaned.empty())
-
- 826 const auto keypointJsonSaver = std::make_shared<KeypointJsonSaver>(writeKeypointJsonCleaned);
-
-
-
-
-
-
- 833 const auto humanFormat =
true;
- 834 const auto cocoJsonSaver = std::make_shared<CocoJsonSaver>(wrapperStructOutput.
writeCocoJson,
-
-
-
-
- 839 if (!writeImagesCleaned.empty())
-
- 841 const auto imageSaver = std::make_shared<ImageSaver>(writeImagesCleaned,
-
-
-
-
-
-
- 848 if (finalOutputSize.x <= 0 || finalOutputSize.y <= 0)
- 849 error(
"Video can only be recorded if outputSize is known.", __LINE__, __FUNCTION__, __FILE__);
- 850 const auto originalVideoFps = (wrapperStructInput.
producerSharedPtr->get(CV_CAP_PROP_FPS) > 0.
-
- 852 const auto videoSaver = std::make_shared<VideoSaver>(
- 853 wrapperStructOutput.
writeVideo, CV_FOURCC(
'M',
'J',
'P',
'G'), originalVideoFps, finalOutputSize
-
-
-
-
- 858 if (!writeHeatMapsCleaned.empty())
-
- 860 const auto heatMapSaver = std::make_shared<HeatMapSaver>(writeHeatMapsCleaned,
-
-
-
-
-
-
-
-
-
-
- 871 const auto guiInfoAdder = std::make_shared<GuiInfoAdder>(gpuNumber, wrapperStructOutput.
displayGui);
-
-
-
-
-
-
-
- 879 std::vector<std::shared_ptr<Renderer>> renderers;
-
- 881 renderers.emplace_back(std::static_pointer_cast<Renderer>(poseCpuRenderer));
-
- 883 for (
const auto& poseGpuRenderer : poseGpuRenderers)
- 884 renderers.emplace_back(std::static_pointer_cast<Renderer>(poseGpuRenderer));
-
- 886 const auto gui = std::make_shared<Gui>(
- 887 finalOutputSize, wrapperStructOutput.
fullScreen, mThreadManager.getIsRunningSharedPtr(),
- 888 spVideoSeek, poseExtractors, renderers
-
-
- 891 spWGui = {std::make_shared<WGui<TDatumsPtr>>(gui)};
-
-
-
- 895 catch (
const std::exception& e)
-
- 897 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
- 901 template<
typename TDatums,
typename TWorker,
typename TQueue>
-
-
-
-
- 906 configureThreadManager();
- 907 mThreadManager.exec();
-
- 909 catch (
const std::exception& e)
-
- 911 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
- 915 template<
typename TDatums,
typename TWorker,
typename TQueue>
-
-
-
-
- 920 configureThreadManager();
- 921 mThreadManager.start();
-
- 923 catch (
const std::exception& e)
-
- 925 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
- 929 template<
typename TDatums,
typename TWorker,
typename TQueue>
-
-
-
-
- 934 mThreadManager.stop();
-
- 936 catch (
const std::exception& e)
-
- 938 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
- 942 template<
typename TDatums,
typename TWorker,
typename TQueue>
-
-
-
-
- 947 return mThreadManager.isRunning();
-
- 949 catch (
const std::exception& e)
-
- 951 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
-
- 956 template<
typename TDatums,
typename TWorker,
typename TQueue>
-
-
-
-
- 961 if (!mUserInputWs.empty())
- 962 error(
"Emplace cannot be called if an input worker was already selected.",
- 963 __LINE__, __FUNCTION__, __FILE__);
- 964 return mThreadManager.tryEmplace(tDatums);
-
- 966 catch (
const std::exception& e)
-
- 968 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
-
- 973 template<
typename TDatums,
typename TWorker,
typename TQueue>
-
-
-
-
- 978 if (!mUserInputWs.empty())
- 979 error(
"Emplace cannot be called if an input worker was already selected.",
- 980 __LINE__, __FUNCTION__, __FILE__);
- 981 return mThreadManager.waitAndEmplace(tDatums);
-
- 983 catch (
const std::exception& e)
-
- 985 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
-
- 990 template<
typename TDatums,
typename TWorker,
typename TQueue>
-
-
-
-
- 995 if (!mUserInputWs.empty())
- 996 error(
"Push cannot be called if an input worker was already selected.",
- 997 __LINE__, __FUNCTION__, __FILE__);
- 998 return mThreadManager.tryPush(tDatums);
-
- 1000 catch (
const std::exception& e)
-
- 1002 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
-
- 1007 template<
typename TDatums,
typename TWorker,
typename TQueue>
-
-
-
-
- 1012 if (!mUserInputWs.empty())
- 1013 error(
"Push cannot be called if an input worker was already selected.",
- 1014 __LINE__, __FUNCTION__, __FILE__);
- 1015 return mThreadManager.waitAndPush(tDatums);
-
- 1017 catch (
const std::exception& e)
-
- 1019 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
-
- 1024 template<
typename TDatums,
typename TWorker,
typename TQueue>
-
-
-
-
- 1029 if (!mUserOutputWs.empty())
- 1030 error(
"Pop cannot be called if an output worker was already selected.",
- 1031 __LINE__, __FUNCTION__, __FILE__);
- 1032 return mThreadManager.tryPop(tDatums);
-
- 1034 catch (
const std::exception& e)
-
- 1036 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
-
- 1041 template<
typename TDatums,
typename TWorker,
typename TQueue>
-
-
-
-
- 1046 if (!mUserOutputWs.empty())
- 1047 error(
"Pop cannot be called if an output worker was already selected.",
- 1048 __LINE__, __FUNCTION__, __FILE__);
- 1049 return mThreadManager.waitAndPop(tDatums);
-
- 1051 catch (
const std::exception& e)
-
- 1053 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
-
- 1058 template<
typename TDatums,
typename TWorker,
typename TQueue>
-
-
-
-
- 1063 mThreadManager.reset();
-
-
- 1066 mUserInputWs.clear();
- 1067 wDatumProducer =
nullptr;
- 1068 spWCvMatToOpInput =
nullptr;
- 1069 spWCvMatToOpOutput =
nullptr;
-
- 1071 mPostProcessingWs.clear();
- 1072 mUserPostProcessingWs.clear();
-
-
- 1075 mUserOutputWs.clear();
-
- 1077 catch (
const std::exception& e)
-
- 1079 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
- 1083 template<
typename TDatums,
typename TWorker,
typename TQueue>
- 1084 void Wrapper<TDatums, TWorker, TQueue>::configureThreadManager()
-
-
-
-
-
-
- 1091 if (spWCvMatToOpInput ==
nullptr || spWCvMatToOpOutput ==
nullptr)
- 1092 error(
"Configure the Wrapper class before calling `start()`.", __LINE__, __FUNCTION__, __FILE__);
- 1093 if ((wDatumProducer ==
nullptr) == (mUserInputWs.empty())
-
-
-
- 1097 const auto message =
"You need to have 1 and only 1 producer selected. You can introduce your own"
- 1098 " producer by using setWorkerInput() or use the OpenPose default producer by"
- 1099 " configuring it in the configure function) or use the"
- 1100 " ThreadManagerMode::Asynchronous(In) mode.";
- 1101 error(message, __LINE__, __FUNCTION__, __FILE__);
-
- 1103 if (mOutputWs.empty() && mUserOutputWs.empty() && spWGui ==
nullptr
-
-
-
- 1107 error(
"No output selected.", __LINE__, __FUNCTION__, __FILE__);
-
-
-
-
- 1112 mThreadManager.reset();
-
- 1114 auto queueIn = 0ull;
- 1115 auto queueOut = 1ull;
-
- 1117 spWIdGenerator = std::make_shared<WIdGenerator<std::shared_ptr<TDatums>>>();
- 1118 if (!mUserInputWs.empty() && mUserInputWsOnNewThread)
-
-
- 1121 mThreadManager.add(mThreadId, mUserInputWs, queueIn++, queueOut++);
-
-
- 1124 mThreadManager.add(mThreadId, {spWIdGenerator, spWCvMatToOpInput, spWCvMatToOpOutput}, queueIn++,
-
-
-
-
-
- 1130 std::vector<TWorker> workersAux;
-
- 1132 if (!mUserInputWs.empty())
- 1133 workersAux = mergeWorkers(workersAux, mUserInputWs);
-
- 1135 else if (wDatumProducer !=
nullptr)
- 1136 workersAux = mergeWorkers(workersAux, {wDatumProducer});
-
-
-
- 1140 error(
"No input selected.", __LINE__, __FUNCTION__, __FILE__);
-
- 1142 workersAux = mergeWorkers(workersAux, {spWIdGenerator, spWCvMatToOpInput, spWCvMatToOpOutput});
-
- 1144 mThreadManager.add(mThreadId, workersAux, queueIn++, queueOut++);
-
-
-
-
- 1149 if (!spWPoses.empty())
-
- 1151 if (mMultiThreadEnabled)
-
- 1153 for (
auto& wPose : spWPoses)
-
- 1155 mThreadManager.add(mThreadId, wPose, queueIn, queueOut);
-
-
-
-
-
- 1161 log(
"Multi-threading disabled, only 1 thread running. All GPUs have been disabled but the first"
- 1162 " one, which is defined by gpuNumberStart (in the demo, it is set with the `num_gpu_start`"
-
- 1164 mThreadManager.add(mThreadId, spWPoses.at(0), queueIn, queueOut);
-
-
-
-
-
- 1170 if (!mUserPostProcessingWs.empty() && mUserPostProcessingWsOnNewThread)
-
-
- 1173 if (!mPostProcessingWs.empty())
-
-
- 1176 mThreadManager.add(mThreadId, mPostProcessingWs, queueIn++, queueOut++);
-
-
-
-
- 1181 mThreadManager.add(mThreadId, mUserPostProcessingWs, queueIn++, queueOut++);
-
-
- 1184 if (!mOutputWs.empty())
-
-
- 1187 mThreadManager.add(mThreadId, mOutputWs, queueIn++, queueOut++);
-
-
-
-
-
-
-
- 1195 auto workersAux = mergeWorkers(mPostProcessingWs, mUserPostProcessingWs);
- 1196 workersAux = mergeWorkers(workersAux, mOutputWs);
- 1197 if (!workersAux.empty())
-
-
- 1200 mThreadManager.add(mThreadId, workersAux, queueIn++, queueOut++);
-
-
-
-
-
- 1206 if (!mUserOutputWs.empty())
-
- 1208 if (mUserOutputWsOnNewThread)
-
- 1210 mThreadManager.add(mThreadId, mUserOutputWs, queueIn++, queueOut++);
-
-
-
- 1214 mThreadManager.add(mThreadId-1, mUserOutputWs, queueIn++, queueOut++);
-
-
- 1217 if (spWGui !=
nullptr)
-
-
- 1220 mThreadManager.add(mThreadId, spWGui, queueIn++, queueOut++);
-
-
-
-
- 1225 catch (
const std::exception& e)
-
- 1227 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
- 1231 template<
typename TDatums,
typename TWorker,
typename TQueue>
- 1232 unsigned long long Wrapper<TDatums, TWorker, TQueue>::threadIdPP()
-
-
-
- 1236 if (mMultiThreadEnabled)
-
-
-
- 1240 catch (
const std::exception& e)
-
- 1242 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
-
-
-
-
- 1247 template<
typename TDatums,
typename TWorker,
typename TQueue>
- 1248 std::vector<TWorker> Wrapper<TDatums, TWorker, TQueue>::mergeWorkers(
const std::vector<TWorker>& workersA,
- 1249 const std::vector<TWorker>& workersB)
-
-
-
- 1253 auto workersToReturn(workersA);
- 1254 for (
auto& worker : workersB)
- 1255 workersToReturn.emplace_back(worker);
- 1256 return workersToReturn;
-
- 1258 catch (
const std::exception& e)
-
- 1260 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
- 1261 return std::vector<TWorker>{};
-
-
-
- 1265 extern template class Wrapper<DATUM_BASE_NO_PTR>;
-
-
- 1268 #endif // OPENPOSE_WRAPPER_WRAPPER_HPP
+
+
+
+
+
+
+
+
+
+
+
+ 705 if (!poseGpuRenderers.empty())
+ 706 for (
auto i = 0u; i < spWPoses.size(); i++)
+
+
+
+
+
+
+
+
+
+ 716 const auto faceRenderer = std::make_shared<FaceCpuRenderer>(wrapperStructFace.
renderThreshold,
+
+
+
+
+
+
+
+
+ 725 for (
auto i = 0u; i < spWPoses.size(); i++)
+
+
+ 728 const auto faceRenderer = std::make_shared<FaceGpuRenderer>(wrapperStructFace.
renderThreshold,
+
+
+
+ 732 if (!poseGpuRenderers.empty())
+
+ 734 const bool isLastRenderer = !renderHandGpu;
+ 735 const auto renderer = std::static_pointer_cast<
PoseGpuRenderer>(poseGpuRenderers.at(i));
+
+
+
+
+
+
+
+
+ 744 error(
"Unknown RenderMode.", __LINE__, __FUNCTION__, __FILE__);
+
+
+
+
+
+
+
+
+
+ 754 const auto handRenderer = std::make_shared<HandCpuRenderer>(wrapperStructHand.
renderThreshold,
+
+
+
+
+
+
+
+
+ 763 for (
auto i = 0u; i < spWPoses.size(); i++)
+
+
+ 766 const auto handRenderer = std::make_shared<HandGpuRenderer>(wrapperStructHand.
renderThreshold,
+
+
+
+ 770 if (!poseGpuRenderers.empty())
+
+ 772 const bool isLastRenderer =
true;
+ 773 const auto renderer = std::static_pointer_cast<
PoseGpuRenderer>(poseGpuRenderers.at(i));
+
+
+
+
+
+
+
+
+ 782 error(
"Unknown RenderMode.", __LINE__, __FUNCTION__, __FILE__);
+
+
+
+ 786 mPostProcessingWs.clear();
+
+ 788 if (spWPoses.size() > 1u)
+
+
+
+
+ 793 mPostProcessingWs = mergeWorkers(mPostProcessingWs, cpuRenderers);
+ 794 const auto opOutputToCvMat = std::make_shared<OpOutputToCvMat>();
+
+
+
+
+
+
+
+ 802 (finalOutputSize == producerSize || finalOutputSize.x <= 0 || finalOutputSize.y <= 0))
+
+
+ 805 && finalOutputSize == poseNetOutputSize))
+
+
+ 808 auto keypointScaler = std::make_shared<KeypointScaler>(wrapperStructPose.
keypointScale);
+
+
+
+
+
+ 814 if (!writeKeypointCleaned.empty())
+
+ 816 const auto keypointSaver = std::make_shared<KeypointSaver>(writeKeypointCleaned,
+
+
+ 819 if (wrapperStructFace.
enable)
+
+ 821 if (wrapperStructHand.
enable)
+
+
+
+ 825 if (!writeKeypointJsonCleaned.empty())
+
+ 827 const auto keypointJsonSaver = std::make_shared<KeypointJsonSaver>(writeKeypointJsonCleaned);
+
+
+
+
+
+
+ 834 const auto humanFormat =
true;
+ 835 const auto cocoJsonSaver = std::make_shared<CocoJsonSaver>(wrapperStructOutput.
writeCocoJson,
+
+
+
+
+ 840 if (!writeImagesCleaned.empty())
+
+ 842 const auto imageSaver = std::make_shared<ImageSaver>(writeImagesCleaned,
+
+
+
+
+
+
+ 849 if (finalOutputSize.x <= 0 || finalOutputSize.y <= 0)
+ 850 error(
"Video can only be recorded if outputSize is known.", __LINE__, __FUNCTION__, __FILE__);
+ 851 const auto originalVideoFps = (wrapperStructInput.
producerSharedPtr->get(CV_CAP_PROP_FPS) > 0.
+
+ 853 const auto videoSaver = std::make_shared<VideoSaver>(
+ 854 wrapperStructOutput.
writeVideo, CV_FOURCC(
'M',
'J',
'P',
'G'), originalVideoFps, finalOutputSize
+
+
+
+
+ 859 if (!writeHeatMapsCleaned.empty())
+
+ 861 const auto heatMapSaver = std::make_shared<HeatMapSaver>(writeHeatMapsCleaned,
+
+
+
+
+
+
+
+
+
+
+ 872 const auto guiInfoAdder = std::make_shared<GuiInfoAdder>(gpuNumber, wrapperStructOutput.
displayGui);
+
+
+
+
+
+
+
+ 880 std::vector<std::shared_ptr<Renderer>> renderers;
+
+ 882 renderers.emplace_back(std::static_pointer_cast<Renderer>(poseCpuRenderer));
+
+ 884 for (
const auto& poseGpuRenderer : poseGpuRenderers)
+ 885 renderers.emplace_back(std::static_pointer_cast<Renderer>(poseGpuRenderer));
+
+ 887 const auto gui = std::make_shared<Gui>(
+ 888 finalOutputSize, wrapperStructOutput.
fullScreen, mThreadManager.getIsRunningSharedPtr(),
+ 889 spVideoSeek, poseExtractors, renderers
+
+
+ 892 spWGui = {std::make_shared<WGui<TDatumsPtr>>(gui)};
+
+
+
+ 896 catch (
const std::exception& e)
+
+ 898 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+ 902 template<
typename TDatums,
typename TWorker,
typename TQueue>
+
+
+
+
+ 907 configureThreadManager();
+ 908 mThreadManager.exec();
+
+ 910 catch (
const std::exception& e)
+
+ 912 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+ 916 template<
typename TDatums,
typename TWorker,
typename TQueue>
+
+
+
+
+ 921 configureThreadManager();
+ 922 mThreadManager.start();
+
+ 924 catch (
const std::exception& e)
+
+ 926 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+ 930 template<
typename TDatums,
typename TWorker,
typename TQueue>
+
+
+
+
+ 935 mThreadManager.stop();
+
+ 937 catch (
const std::exception& e)
+
+ 939 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+ 943 template<
typename TDatums,
typename TWorker,
typename TQueue>
+
+
+
+
+ 948 return mThreadManager.isRunning();
+
+ 950 catch (
const std::exception& e)
+
+ 952 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+
+ 957 template<
typename TDatums,
typename TWorker,
typename TQueue>
+
+
+
+
+ 962 if (!mUserInputWs.empty())
+ 963 error(
"Emplace cannot be called if an input worker was already selected.",
+ 964 __LINE__, __FUNCTION__, __FILE__);
+ 965 return mThreadManager.tryEmplace(tDatums);
+
+ 967 catch (
const std::exception& e)
+
+ 969 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+
+ 974 template<
typename TDatums,
typename TWorker,
typename TQueue>
+
+
+
+
+ 979 if (!mUserInputWs.empty())
+ 980 error(
"Emplace cannot be called if an input worker was already selected.",
+ 981 __LINE__, __FUNCTION__, __FILE__);
+ 982 return mThreadManager.waitAndEmplace(tDatums);
+
+ 984 catch (
const std::exception& e)
+
+ 986 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+
+ 991 template<
typename TDatums,
typename TWorker,
typename TQueue>
+
+
+
+
+ 996 if (!mUserInputWs.empty())
+ 997 error(
"Push cannot be called if an input worker was already selected.",
+ 998 __LINE__, __FUNCTION__, __FILE__);
+ 999 return mThreadManager.tryPush(tDatums);
+
+ 1001 catch (
const std::exception& e)
+
+ 1003 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+
+ 1008 template<
typename TDatums,
typename TWorker,
typename TQueue>
+
+
+
+
+ 1013 if (!mUserInputWs.empty())
+ 1014 error(
"Push cannot be called if an input worker was already selected.",
+ 1015 __LINE__, __FUNCTION__, __FILE__);
+ 1016 return mThreadManager.waitAndPush(tDatums);
+
+ 1018 catch (
const std::exception& e)
+
+ 1020 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+
+ 1025 template<
typename TDatums,
typename TWorker,
typename TQueue>
+
+
+
+
+ 1030 if (!mUserOutputWs.empty())
+ 1031 error(
"Pop cannot be called if an output worker was already selected.",
+ 1032 __LINE__, __FUNCTION__, __FILE__);
+ 1033 return mThreadManager.tryPop(tDatums);
+
+ 1035 catch (
const std::exception& e)
+
+ 1037 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+
+ 1042 template<
typename TDatums,
typename TWorker,
typename TQueue>
+
+
+
+
+ 1047 if (!mUserOutputWs.empty())
+ 1048 error(
"Pop cannot be called if an output worker was already selected.",
+ 1049 __LINE__, __FUNCTION__, __FILE__);
+ 1050 return mThreadManager.waitAndPop(tDatums);
+
+ 1052 catch (
const std::exception& e)
+
+ 1054 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+
+ 1059 template<
typename TDatums,
typename TWorker,
typename TQueue>
+
+
+
+
+ 1064 mThreadManager.reset();
+
+
+ 1067 mUserInputWs.clear();
+ 1068 wDatumProducer =
nullptr;
+ 1069 spWCvMatToOpInput =
nullptr;
+ 1070 spWCvMatToOpOutput =
nullptr;
+
+ 1072 mPostProcessingWs.clear();
+ 1073 mUserPostProcessingWs.clear();
+
+
+ 1076 mUserOutputWs.clear();
+
+ 1078 catch (
const std::exception& e)
+
+ 1080 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+ 1084 template<
typename TDatums,
typename TWorker,
typename TQueue>
+ 1085 void Wrapper<TDatums, TWorker, TQueue>::configureThreadManager()
+
+
+
+
+
+
+ 1092 if (spWCvMatToOpInput ==
nullptr || spWCvMatToOpOutput ==
nullptr)
+ 1093 error(
"Configure the Wrapper class before calling `start()`.", __LINE__, __FUNCTION__, __FILE__);
+ 1094 if ((wDatumProducer ==
nullptr) == (mUserInputWs.empty())
+
+
+
+ 1098 const auto message =
"You need to have 1 and only 1 producer selected. You can introduce your own"
+ 1099 " producer by using setWorkerInput() or use the OpenPose default producer by"
+ 1100 " configuring it in the configure function) or use the"
+ 1101 " ThreadManagerMode::Asynchronous(In) mode.";
+ 1102 error(message, __LINE__, __FUNCTION__, __FILE__);
+
+ 1104 if (mOutputWs.empty() && mUserOutputWs.empty() && spWGui ==
nullptr
+
+
+
+ 1108 error(
"No output selected.", __LINE__, __FUNCTION__, __FILE__);
+
+
+
+
+ 1113 mThreadManager.reset();
+
+ 1115 auto queueIn = 0ull;
+ 1116 auto queueOut = 1ull;
+
+ 1118 spWIdGenerator = std::make_shared<WIdGenerator<std::shared_ptr<TDatums>>>();
+ 1119 if (!mUserInputWs.empty() && mUserInputWsOnNewThread)
+
+
+ 1122 mThreadManager.add(mThreadId, mUserInputWs, queueIn++, queueOut++);
+
+
+ 1125 mThreadManager.add(mThreadId, {spWIdGenerator, spWCvMatToOpInput, spWCvMatToOpOutput}, queueIn++,
+
+
+
+
+
+ 1131 std::vector<TWorker> workersAux;
+
+ 1133 if (!mUserInputWs.empty())
+ 1134 workersAux = mergeWorkers(workersAux, mUserInputWs);
+
+ 1136 else if (wDatumProducer !=
nullptr)
+ 1137 workersAux = mergeWorkers(workersAux, {wDatumProducer});
+
+
+
+ 1141 error(
"No input selected.", __LINE__, __FUNCTION__, __FILE__);
+
+ 1143 workersAux = mergeWorkers(workersAux, {spWIdGenerator, spWCvMatToOpInput, spWCvMatToOpOutput});
+
+ 1145 mThreadManager.add(mThreadId, workersAux, queueIn++, queueOut++);
+
+
+
+
+ 1150 if (!spWPoses.empty())
+
+ 1152 if (mMultiThreadEnabled)
+
+ 1154 for (
auto& wPose : spWPoses)
+
+ 1156 mThreadManager.add(mThreadId, wPose, queueIn, queueOut);
+
+
+
+
+
+ 1162 log(
"Multi-threading disabled, only 1 thread running. All GPUs have been disabled but the first"
+ 1163 " one, which is defined by gpuNumberStart (in the demo, it is set with the `num_gpu_start`"
+
+ 1165 mThreadManager.add(mThreadId, spWPoses.at(0), queueIn, queueOut);
+
+
+
+
+
+ 1171 if (!mUserPostProcessingWs.empty() && mUserPostProcessingWsOnNewThread)
+
+
+ 1174 if (!mPostProcessingWs.empty())
+
+
+ 1177 mThreadManager.add(mThreadId, mPostProcessingWs, queueIn++, queueOut++);
+
+
+
+
+ 1182 mThreadManager.add(mThreadId, mUserPostProcessingWs, queueIn++, queueOut++);
+
+
+ 1185 if (!mOutputWs.empty())
+
+
+ 1188 mThreadManager.add(mThreadId, mOutputWs, queueIn++, queueOut++);
+
+
+
+
+
+
+
+ 1196 auto workersAux = mergeWorkers(mPostProcessingWs, mUserPostProcessingWs);
+ 1197 workersAux = mergeWorkers(workersAux, mOutputWs);
+ 1198 if (!workersAux.empty())
+
+
+ 1201 mThreadManager.add(mThreadId, workersAux, queueIn++, queueOut++);
+
+
+
+
+
+ 1207 if (!mUserOutputWs.empty())
+
+ 1209 if (mUserOutputWsOnNewThread)
+
+ 1211 mThreadManager.add(mThreadId, mUserOutputWs, queueIn++, queueOut++);
+
+
+
+ 1215 mThreadManager.add(mThreadId-1, mUserOutputWs, queueIn++, queueOut++);
+
+
+ 1218 if (spWGui !=
nullptr)
+
+
+ 1221 mThreadManager.add(mThreadId, spWGui, queueIn++, queueOut++);
+
+
+
+
+ 1226 catch (
const std::exception& e)
+
+ 1228 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+ 1232 template<
typename TDatums,
typename TWorker,
typename TQueue>
+ 1233 unsigned long long Wrapper<TDatums, TWorker, TQueue>::threadIdPP()
+
+
+
+ 1237 if (mMultiThreadEnabled)
+
+
+
+ 1241 catch (
const std::exception& e)
+
+ 1243 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+
+
+
+
+ 1248 template<
typename TDatums,
typename TWorker,
typename TQueue>
+ 1249 std::vector<TWorker> Wrapper<TDatums, TWorker, TQueue>::mergeWorkers(
const std::vector<TWorker>& workersA,
+ 1250 const std::vector<TWorker>& workersB)
+
+
+
+ 1254 auto workersToReturn(workersA);
+ 1255 for (
auto& worker : workersB)
+ 1256 workersToReturn.emplace_back(worker);
+ 1257 return workersToReturn;
+
+ 1259 catch (
const std::exception& e)
+
+ 1261 error(e.what(), __LINE__, __FUNCTION__, __FILE__);
+ 1262 return std::vector<TWorker>{};
+
+
+
+ 1266 extern template class Wrapper<DATUM_BASE_NO_PTR>;
+
+
+ 1269 #endif // OPENPOSE_WRAPPER_WRAPPER_HPP
PoseModel poseModel
Definition: wrapperStructPose.hpp:76
Point< int > netInputSize
Definition: wrapperStructPose.hpp:23
@@ -1249,7 +1250,7 @@ $(document).ready(function(){initNavTree('wrapper_8hpp_source.html','');});
std::vector< HeatMapType > heatMapTypes
Definition: wrapperStructPose.hpp:112
std::string writeHeatMapsFormat
Definition: wrapperStructOutput.hpp:89
Definition: wPoseSaver.hpp:12
-bool tryPush(const std::shared_ptr< TDatums > &tDatums)
Definition: wrapper.hpp:991
+bool tryPush(const std::shared_ptr< TDatums > &tDatums)
Definition: wrapper.hpp:992
Definition: wrapperStructPose.hpp:16
std::string writeKeypoint
Definition: wrapperStructOutput.hpp:36
float alphaKeypoint
Definition: wrapperStructFace.hpp:39
@@ -1257,10 +1258,10 @@ $(document).ready(function(){initNavTree('wrapper_8hpp_source.html','');});
Definition: wFaceSaver.hpp:12
T y
Definition: point.hpp:12
-void stop()
Definition: wrapper.hpp:930
+void stop()
Definition: wrapper.hpp:931
float alphaKeypoint
Definition: wrapperStructHand.hpp:59
-bool tryPop(std::shared_ptr< TDatums > &tDatums)
Definition: wrapper.hpp:1025
-void exec()
Definition: wrapper.hpp:902
+bool tryPop(std::shared_ptr< TDatums > &tDatums)
Definition: wrapper.hpp:1026
+void exec()
Definition: wrapper.hpp:903
@@ -1291,9 +1292,9 @@ $(document).ready(function(){initNavTree('wrapper_8hpp_source.html','');});
float scaleGap
Definition: wrapperStructPose.hpp:63
RenderMode renderMode
Definition: wrapperStructPose.hpp:69
-bool waitAndEmplace(std::shared_ptr< TDatums > &tDatums)
Definition: wrapper.hpp:974
+bool waitAndEmplace(std::shared_ptr< TDatums > &tDatums)
Definition: wrapper.hpp:975
Definition: wrapper.hpp:32
-bool tryEmplace(std::shared_ptr< TDatums > &tDatums)
Definition: wrapper.hpp:957
+bool tryEmplace(std::shared_ptr< TDatums > &tDatums)
Definition: wrapper.hpp:958
float scaleRange
Definition: wrapperStructHand.hpp:40
int gpuNumberStart
Definition: wrapperStructPose.hpp:50
RenderMode renderMode
Definition: wrapperStructFace.hpp:33
@@ -1303,8 +1304,8 @@ $(document).ready(function(){initNavTree('wrapper_8hpp_source.html','');});
Definition: wVideoSaver.hpp:11
Definition: wOpOutputToCvMat.hpp:11
-bool waitAndPush(const std::shared_ptr< TDatums > &tDatums)
Definition: wrapper.hpp:1008
-void start()
Definition: wrapper.hpp:916
+bool waitAndPush(const std::shared_ptr< TDatums > &tDatums)
Definition: wrapper.hpp:1009
+void start()
Definition: wrapper.hpp:917
OP_API std::string formatAsDirectory(const std::string &directoryPathString)
@@ -1320,7 +1321,7 @@ $(document).ready(function(){initNavTree('wrapper_8hpp_source.html','');});
Definition: wFaceRenderer.hpp:11
-bool waitAndPop(std::shared_ptr< TDatums > &tDatums)
Definition: wrapper.hpp:1042
+bool waitAndPop(std::shared_ptr< TDatums > &tDatums)
Definition: wrapper.hpp:1043
Definition: threadManager.hpp:16
Definition: wPoseRenderer.hpp:11
@@ -1354,7 +1355,7 @@ $(document).ready(function(){initNavTree('wrapper_8hpp_source.html','');});
ThreadManagerMode
Definition: enumClasses.hpp:9
int intRound(const T a)
Definition: fastMath.hpp:24
int gpuNumber
Definition: wrapperStructPose.hpp:44
-bool isRunning() const
Definition: wrapper.hpp:943
+bool isRunning() const
Definition: wrapper.hpp:944
T x
Definition: point.hpp:11
void setWorkerInput(const TWorker &worker, const bool workerOnNewThread=true)
Definition: wrapper.hpp:329
float renderThreshold
Definition: wrapperStructFace.hpp:52