class GVA::RegionOfInterest#

Overview#

This class represents region of interest - object describing detection result (bounding box) and containing multiple Tensor objects (inference results) attached by multiple models. For example, it can be region of interest with detected face and recognized age and sex of a person. It can be produced by a pipeline with gvadetect with detection model and two gvaclassify elements with two classification models. Such RegionOfInterest will have bounding box coordinates filled and will have 3 Tensor objects attached - 1 Tensor object with detection result and 2 Tensor objects with classification results coming from 2 classifications. More…

#include <region_of_interest.h>

class RegionOfInterest {
public:
    // construction

    RegionOfInterest(GstVideoRegionOfInterestMeta* meta);
    RegionOfInterest(GstAnalyticsODMtd od_meta, GstAnalyticsODExtMtd od_ext_meta);

    // methods

    Rect<uint32_t> rect() const;
    Rect<double> normalized_rect();
    double rotation() const;
    std::string label() const;
    double confidence() const;
    int32_t object_id() const;
    std::vector<Tensor> tensors() const;
    Tensor add_tensor(const std::string& name);
    Tensor detection();
    int label_id() const;
    int region_id();
    void set_label(std::string label);
    void set_object_id(int32_t id);
    GList* get_params() const;
    GstStructure* get_param(const char* name) const;
    void add_param(GstStructure* s);
    GstVideoRegionOfInterestMeta* _meta() const;
};

Detailed Documentation#

This class represents region of interest - object describing detection result (bounding box) and containing multiple Tensor objects (inference results) attached by multiple models. For example, it can be region of interest with detected face and recognized age and sex of a person. It can be produced by a pipeline with gvadetect with detection model and two gvaclassify elements with two classification models. Such RegionOfInterest will have bounding box coordinates filled and will have 3 Tensor objects attached - 1 Tensor object with detection result and 2 Tensor objects with classification results coming from 2 classifications.

Construction#

RegionOfInterest(GstVideoRegionOfInterestMeta* meta)

Construct RegionOfInterest instance from GstVideoRegionOfInterestMeta. After this, RegionOfInterest will obtain all tensors (detection & inference results) from GstVideoRegionOfInterestMeta.

Parameters:

meta

GstVideoRegionOfInterestMeta containing bounding box information and tensors

Methods#

Rect<uint32_t> rect() const

Get bounding box of the RegionOfInterest as pixel coordinates in original image.

Returns:

Bounding box coordinates of the RegionOfInterest

Rect<double> normalized_rect()

Get bounding box of the RegionOfInterest as normalized coordinates in the range [0, 1].

Returns:

Bounding box coordinates of the RegionOfInterest

double rotation() const

Get RegionOfInterest bounding box rotation.

Returns:

Bounding box rotation of the RegionOfInterest

std::string label() const

Get RegionOfInterest label.

Returns:

RegionOfInterest label

double confidence() const

Get RegionOfInterest detection confidence (set by gvadetect)

Returns:

last added detection Tensor confidence if exists, otherwise 0.0

int32_t object_id() const

Get unique id of the RegionOfInterest. The id typically created by gvatrack element.

Returns:

Unique id, or zero value if not found

std::vector<Tensor> tensors() const

Get all Tensor instances added to this RegionOfInterest.

Returns:

vector of Tensor instances added to this RegionOfInterest

Tensor add_tensor(const std::string& name)

Add new tensor (inference result) to this RegionOfInterest with name set. To add detection tensor, set name to “detection”.

Parameters:

name

name for the tensor. If name is set to “detection”, detection Tensor will be created and set for this RegionOfInterest

Returns:

just created Tensor object, which can be filled with tensor information further

Tensor detection()

Returns detection Tensor, last added to this RegionOfInterest. As any other Tensor, returned detection Tensor can contain arbitrary information. If you use RegionOfInterest based on GstVideoRegionOfInterestMeta attached by gvadetect by default, then this Tensor will contain “label_id”, “confidence”, “x_min”, “x_max”, “y_min”, “y_max” fields. If RegionOfInterest doesn’t have detection Tensor, it will be created in-place.

Returns:

detection Tensor, empty if there were no detection Tensor objects added to this RegionOfInterest when this method was called

int label_id() const

Get label_id from detection Tensor, last added to this RegionOfInterest.

Returns:

last added detection Tensor label_id if exists, otherwise 0

int region_id()

Access RegionOfInterest ID Use this method to get RegionOfInterest ID. ID is generated with “GVA::VideoFrame::add_region()” call. Region ID can be a positive or negative integer, but never zero.

Returns:

ID field value

void set_label(std::string label)

Set RegionOfInterest label.

Parameters:

label

Label to set

void set_object_id(int32_t id)

Set object ID.

Parameters:

id

ID to set

GstVideoRegionOfInterestMeta* _meta() const

Internal function, don’t use or use with caution.

Returns:

pointer to underlying GstVideoRegionOfInterestMeta