All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
op::HandExtractorNet Class Referenceabstract

`#include <handExtractorNet.hpp>`

Inherited by op::HandExtractorCaffe.

## Public Member Functions

| HandExtractorNet (const Point< int > &netInputSize, const Point< int > &netOutputSize, const unsigned short numberScales=1, const float rangeScales=0.4f, const std::vector< HeatMapType > &heatMapTypes={}, const ScaleMode heatMapScale=ScaleMode::ZeroToOne)
virtual | ~HandExtractorNet ()
void | initializationOnThread ()
virtual void | forwardPass (const std::vector< std::array< Rectangle< float >, 2 >> handRectangles, const cv::Mat &cvInputData)=0
std::array< Array< float >, 2 > | getHeatMaps () const
std::array< Array< float >, 2 > | getHandKeypoints () const
bool | getEnabled () const
void | setEnabled (const bool enabled)

## Protected Member Functions

virtual void | netInitializationOnThread ()=0

## Protected Attributes

const std::pair< unsigned short, float > | mMultiScaleNumberAndRange
const Point< int > | mNetOutputSize
Array< float > | mHandImageCrop
std::array< Array< float >, 2 > | mHandKeypoints
const ScaleMode | mHeatMapScaleMode
const std::vector< HeatMapType > | mHeatMapTypes
std::array< Array< float >, 2 > | mHeatMaps
std::atomic< bool > | mEnabled

## Detailed Description

Hand keypoint extractor class.

## Constructor & Destructor Documentation

op::HandExtractorNet::HandExtractorNet | ( | const Point< int > & | netInputSize,
|  | const Point< int > & | netOutputSize,
|  | const unsigned short | numberScales = `1`,
|  | const float | rangeScales = `0.4f`,
|  | const std::vector< HeatMapType > & | heatMapTypes = `{}`,
|  | const ScaleMode | heatMapScale = `ScaleMode::ZeroToOne`
| ) |  |

explicit

Constructor of the HandExtractorNet class.

Parameters

  netInputSize | Size at which the cropped image (where the hand is located) is resized.
  netOutputSize | Size of the final results. At the moment, it must be equal than netOutputSize.
  numberScales | Number of scales to run. The more scales, the slower it will be but possibly also more accurate.
  rangeScales | The range between the smaller and bigger scale.

virtual op::HandExtractorNet::~HandExtractorNet | ( |  | ) |

virtual

Virtual destructor of the HandExtractorNet class. Required to allow inheritance.

## Member Function Documentation

virtual void op::HandExtractorNet::forwardPass | ( | const std::vector< std::array< Rectangle< float >, 2 >> | handRectangles,
|  | const cv::Mat & | cvInputData
| ) |  |

pure virtual

This function extracts the hand keypoints for each detected hand in the image.

Parameters

  handRectangles

  location of the hands in the image. It is a length-variable std::vector, where each index corresponds to a different person in the image. Internally the std::vector, a std::array of 2 elements: index 0 and 1 for left and right hand respectively. Inside each array element, a op::Rectangle<float> (similar to cv::Rect for floating values) with the position of that hand (or 0,0,0,0 if some hand is missing, e.g., if a specific person has only half of the body inside the image).

  cvInputData | Original image in cv::Mat format and BGR format.

Implemented in op::HandExtractorCaffe.

bool op::HandExtractorNet::getEnabled | ( |  | ) | const

std::array<Array<float>, 2> op::HandExtractorNet::getHandKeypoints | ( |  | ) | const

This function returns the hand keypoins. VERY IMPORTANT: use getHandKeypoints().clone() if the keypoints are going to be edited in a different thread.

Returns
  A 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::HandExtractorNet::getHeatMaps | ( |  | ) | const

void op::HandExtractorNet::initializationOnThread | ( |  | ) |

This function must be call before using any other function. It must also be called inside the thread in which the functions are going to be used.

virtual void op::HandExtractorNet::netInitializationOnThread | ( |  | ) |

protectedpure virtual

Implemented in op::HandExtractorCaffe.

void op::HandExtractorNet::setEnabled | ( | const bool | enabled | ) |

## Member Data Documentation

std::atomic<bool> op::HandExtractorNet::mEnabled

protected

Array<float> op::HandExtractorNet::mHandImageCrop

protected

std::array<Array<float>, 2> op::HandExtractorNet::mHandKeypoints

protected

std::array<Array<float>, 2> op::HandExtractorNet::mHeatMaps

protected

const ScaleMode op::HandExtractorNet::mHeatMapScaleMode

protected

const std::vector<HeatMapType> op::HandExtractorNet::mHeatMapTypes

protected

const std::pair<unsigned short, float> op::HandExtractorNet::mMultiScaleNumberAndRange

protected

const Point<int> op::HandExtractorNet::mNetOutputSize

protected

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

- /home/travis/build/CMU-Perceptual-Computing-Lab/openpose/include/openpose/hand/handExtractorNet.hpp