OpenPose
1.0.0rc2
OpenPose: A Real-Time Multi-Person Key-Point Detection And Multi-Threading C++ Library
|
#include <datum.hpp>
Public Member Functions | |
Datum () | |
Datum (const Datum &datum) | |
Datum & | operator= (const Datum &datum) |
Datum (Datum &&datum) | |
Datum & | operator= (Datum &&datum) |
virtual | ~Datum () |
Datum | clone () const |
bool | operator< (const Datum &datum) const |
bool | operator> (const Datum &datum) const |
bool | operator<= (const Datum &datum) const |
bool | operator>= (const Datum &datum) const |
bool | operator== (const Datum &datum) const |
bool | operator!= (const Datum &datum) const |
Public Attributes | |
unsigned long long | id |
unsigned long long | subId |
unsigned long long | subIdMax |
std::string | name |
unsigned long long | frameNumber |
cv::Mat | cvInputData |
std::vector< Array< float > > | inputNetData |
Array< float > | outputData |
cv::Mat | cvOutputData |
Array< float > | poseKeypoints |
Array< long long > | poseIds |
Array< float > | poseScores |
Array< float > | poseHeatMaps |
std::vector< std::vector < std::array< float, 3 > > > | poseCandidates |
std::vector< Rectangle< float > > | faceRectangles |
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 |
Array< float > | poseKeypoints3D |
Array< float > | faceKeypoints3D |
std::array< Array< float >, 2 > | handKeypoints3D |
cv::Mat | cameraMatrix |
cv::Mat | cameraExtrinsics |
cv::Mat | cameraIntrinsics |
std::vector< double > | scaleInputToNetInputs |
std::vector< Point< int > > | netInputSizes |
double | scaleInputToOutput |
Point< int > | netOutputSize |
double | scaleNetToOutput |
std::pair< int, std::string > | elementRendered |
std::vector< double > | adamPosePtr |
int | adamPoseRows |
std::vector< double > | adamTranslationPtr |
std::vector< double > | vtVecPtr |
int | vtVecRows |
std::vector< double > | j0VecPtr |
int | j0VecRows |
std::vector< double > | adamFaceCoeffsExpPtr |
int | adamFaceCoeffsExpRows |
Datum: The OpenPose Basic Piece of Information Between Threads Datum is one the main OpenPose classes/structs. The workers and threads share by default a std::shared_ptr<std::vector<Datum>>. It contains all the parameters that the different workers and threads need to exchange.
|
explicit |
Default constructor struct. It simply initializes the struct, id is temporary set to 0 and each other variable is assigned to its default value.
op::Datum::Datum | ( | const Datum & | datum | ) |
Copy constructor. It performs fast copy
: For performance purpose, copying a Datum or Array<T> or cv::Mat just copies the reference, it still shares the same internal data. Modifying the copied element will modify the original one. Use clone() for a slower but real copy, similarly to cv::Mat and Array<T>.
datum | Datum to be copied. |
op::Datum::Datum | ( | Datum && | datum | ) |
|
virtual |
Destructor class. Declared virtual so that Datum can be inherited.
Datum op::Datum::clone | ( | ) | const |
Clone function. Similar to cv::Mat::clone and Array<T>::clone. It performs a real but slow copy of the data, i.e., even if the copied element is modified, the original one is not.
|
inline |
Not equal comparison operator.
datum | Datum to be compared. |
|
inline |
Less comparison operator.
datum | Datum to be compared. |
|
inline |
Less or equal comparison operator.
datum | Datum to be compared. |
Copy assignment. Similar to Datum::Datum(const Datum& datum).
datum | Datum to be copied. |
Move assignment. Similar to Datum::Datum(Datum&& datum).
datum | Datum to be moved. |
|
inline |
Equal comparison operator.
datum | Datum to be compared. |
|
inline |
Greater comparison operator.
datum | Datum to be compared. |
|
inline |
Greater or equal comparison operator.
datum | Datum to be compared. |
std::vector<double> op::Datum::adamFaceCoeffsExpPtr |
int op::Datum::adamFaceCoeffsExpRows |
std::vector<double> op::Datum::adamPosePtr |
int op::Datum::adamPoseRows |
std::vector<double> op::Datum::adamTranslationPtr |
cv::Mat op::Datum::cameraExtrinsics |
3x4 extrinsic parameters of the camera.
cv::Mat op::Datum::cameraIntrinsics |
3x3 intrinsic parameters of the camera.
cv::Mat op::Datum::cameraMatrix |
3x4 camera matrix of the camera (equivalent to cameraIntrinsics * cameraExtrinsics).
cv::Mat op::Datum::cvInputData |
Original image to be processed in cv::Mat uchar format. Size: (input_width x input_height) x 3 channels
cv::Mat op::Datum::cvOutputData |
Rendered image in cv::Mat uchar format. It has been resized to the desired output resolution (e.g. resolution
flag in the demo). If outputData is empty, cvOutputData will also be empty. Size: (output_height x output_width) x 3 channels
std::pair<int, std::string> op::Datum::elementRendered |
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
Array<float> op::Datum::faceKeypoints |
Face keypoints (x,y,score) locations for each person in the image. It has been resized to the same resolution as poseKeypoints
. Size: #people x #face parts (70) x 3 ((x,y) coordinates + score)
Array<float> op::Datum::faceKeypoints3D |
Face keypoints (x,y,z,score) locations for each person in the image. It has been resized to the same resolution as poseKeypoints3D
. Size: #people x #face parts (70) x 4 ((x,y,z) coordinates + score)
std::vector<Rectangle<float> > op::Datum::faceRectangles |
Face detection locations (x,y,width,height) for each person in the image. It is resized to cvInputData.size(). Size: #people
unsigned long long op::Datum::frameNumber |
Corresponding frame number. If the producer (e.g., video) starts from frame 0 and does not repeat any frame, then frameNumber should match the field id.
std::array<Array<float>, 2> op::Datum::handHeatMaps |
Hand 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
std::array<Array<float>, 2> op::Datum::handKeypoints |
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)
std::array<Array<float>, 2> op::Datum::handKeypoints3D |
Hand keypoints (x,y,z,score) locations for each person in the image. It has been resized to the same resolution as poseKeypoints3D
. handKeypoints[0] corresponds to left hands, and handKeypoints[1] to right ones. Size each Array: #people x #hand parts (21) x 4 ((x,y,z) coordinates + score)
std::vector<std::array<Rectangle<float>, 2> > op::Datum::handRectangles |
Hand detection locations (x,y,width,height) for each person in the image. It is resized to cvInputData.size(). Size: #people
unsigned long long op::Datum::id |
Datum ID. Internally used to sort the Datums if multi-threading is used.
std::vector<Array<float> > op::Datum::inputNetData |
Original image to be processed in Array<float> format. It has been resized to the net input resolution, as well as reformatted Array<float> format to be compatible with the net. If >1 scales, each scale is right- and bottom-padded to fill the greatest resolution. The scales are sorted from bigger to smaller. Vector size: #scales Each array size: 3 x input_net_height x input_net_width
std::vector<double> op::Datum::j0VecPtr |
int op::Datum::j0VecRows |
std::string op::Datum::name |
Name used when saving the data to disk (e.g. write_images
or write_keypoint
flags in the demo).
std::vector<Point<int> > op::Datum::netInputSizes |
Size(s) (width x height) of the image(s) fed to the pose deep net. The size of the std::vector corresponds to the number of scales.
Point<int> op::Datum::netOutputSize |
Size (width x height) of the image returned by the deep net.
Array<float> op::Datum::outputData |
Rendered image in Array<float> format. It consists of a blending of the cvInputData and the pose/body part(s) heatmap/PAF(s). If rendering is disabled (e.g. no_render_pose
flag in the demo), outputData will be empty. Size: 3 x output_net_height x output_net_width
std::vector<std::vector<std::array<float,3> > > op::Datum::poseCandidates |
Body pose candidates for the whole image. This parameter is by default empty and disabled for performance. It can be enabled with candidates_body
. Candidates refer to all the detected body parts, before being assembled into people. Note that the number of candidates is equal or higher than the number of body parts after being assembled into people. Size: #body parts x min(part candidates, POSE_MAX_PEOPLE) x 3 (x,y,score). Rather than vector, it should ideally be: std::array<std::vector<std::array<float,3>>, #BP> poseCandidates;
Array<float> op::Datum::poseHeatMaps |
Body pose heatmaps (body parts, background and/or PAFs) for the whole image. This parameter is by default empty and disabled for performance. Each group (body parts, background and PAFs) can be individually enabled. #heatmaps = #body parts (if enabled) + 1 (if background enabled) + 2 x PAFs (if enabled). Each PAF has 2 consecutive channels, one for x- and one for y-coordinates. Order heatmaps: body parts + background (as appears in POSE_BODY_PART_MAPPING) + (x,y) channel of each PAF (sorted as appears in POSE_BODY_PART_PAIRS). See pose/poseParameters.hpp
. The user can choose the heatmaps normalization: ranges [0, 1], [-1, 1] or [0, 255]. Check the heatmaps_scale
flag in the examples/tutorial_wrapper/ for more details. Size: #heatmaps x output_net_height x output_net_width
Array<long long> op::Datum::poseIds |
People ID It returns a person ID for each body pose, providing temporal consistency. The ID will be the same one for a person across frames. I.e. this ID allows to keep track of the same person in time. If either person identification is disabled or poseKeypoints is empty, poseIds will also be empty. Size: #people
Array<float> op::Datum::poseKeypoints |
Body pose (x,y,score) locations for each person in the image. It has been resized to the desired output resolution (e.g. resolution
flag in the demo). Size: #people x #body parts (e.g. 18 for COCO or 15 for MPI) x 3 ((x,y) coordinates + score)
Array<float> op::Datum::poseKeypoints3D |
Body pose (x,y,z,score) locations for each person in the image. Size: #people x #body parts (e.g. 18 for COCO or 15 for MPI) x 4 ((x,y,z) coordinates + score)
Array<float> op::Datum::poseScores |
Body pose global confidence/score for each person in the image. It does not only consider the score of each body keypoint, but also the score of each PAF association. Optimized for COCO evaluation metric. It will highly penalyze people with missing body parts (e.g. cropped people on the borders of the image). If poseKeypoints is empty, poseScores will also be empty. Size: #people
std::vector<double> op::Datum::scaleInputToNetInputs |
Scale ratio between the input Datum::cvInputData and the net input size.
double op::Datum::scaleInputToOutput |
Scale ratio between the input Datum::cvInputData and the output Datum::cvOutputData.
double op::Datum::scaleNetToOutput |
Scale ratio between the net output and the final output Datum::cvOutputData.
unsigned long long op::Datum::subId |
Datum sub-ID. Internally used to sort the Datums if multi-threading is used.
unsigned long long op::Datum::subIdMax |
Datum maximum sub-ID. Used to sort the Datums if multi-threading is used.
std::vector<double> op::Datum::vtVecPtr |
int op::Datum::vtVecRows |