OpenPose 1.0.0rc2 OpenPose: A Real-Time Multi-Person Key-Point Detection And Multi-Threading C++ Library

- Main Page
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Public Attributes | List of all members
op::Datum Struct Reference

`#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
cv::Mat | cvOutputData3D
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

## Detailed Description

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.

## Constructor & Destructor Documentation

op::Datum::Datum | ( |  | ) |
| 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>.

Parameters

  datum | Datum to be copied.

op::Datum::Datum | ( | Datum && | datum | ) |

Move constructor. It destroys the original Datum to be moved.

Parameters

  datum | Datum to be moved.

virtual op::Datum::~Datum | ( |  | ) |
| virtual

Destructor class. Declared virtual so that Datum can be inherited.

## Member Function Documentation

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.

Returns
  The resulting Datum.

bool op::Datum::operator!= | ( | const Datum & | datum | ) | const
| inline

Not equal comparison operator.

Parameters

  datum | Datum to be compared.

Returns
  Whether the instance satisfies the condition with respect to datum.

bool op::Datum::operator< | ( | const Datum & | datum | ) | const
| inline

Less comparison operator.

Parameters

  datum | Datum to be compared.

Returns
  Whether the instance satisfies the condition with respect to datum.

bool op::Datum::operator<= | ( | const Datum & | datum | ) | const
| inline

Less or equal comparison operator.

Parameters

  datum | Datum to be compared.

Returns
  Whether the instance satisfies the condition with respect to datum.

Datum& op::Datum::operator= | ( | const Datum & | datum | ) |

Copy assignment. Similar to Datum::Datum(const Datum& datum).

Parameters

  datum | Datum to be copied.

Returns
  The resulting Datum.

Datum& op::Datum::operator= | ( | Datum && | datum | ) |

Move assignment. Similar to Datum::Datum(Datum&& datum).

Parameters

  datum | Datum to be moved.

Returns
  The resulting Datum.

bool op::Datum::operator== | ( | const Datum & | datum | ) | const
| inline

Equal comparison operator.

Parameters

  datum | Datum to be compared.

Returns
  Whether the instance satisfies the condition with respect to datum.

bool op::Datum::operator> | ( | const Datum & | datum | ) | const
| inline

Greater comparison operator.

Parameters

  datum | Datum to be compared.

Returns
  Whether the instance satisfies the condition with respect to datum.

bool op::Datum::operator>= | ( | const Datum & | datum | ) | const
| inline

Greater or equal comparison operator.

Parameters

  datum | Datum to be compared.

Returns
  Whether the instance satisfies the condition with respect to datum.

## Member Data Documentation

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

cv::Mat op::Datum::cvOutputData3D

Rendered 3D image in cv::Mat uchar format.

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 {OpenPose_path}doc/demo_overview.md 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

The documentation for this struct was generated from the following file:

- /home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/core/datum.hpp