pythia.iterators#

Shortcuts to iterate over pyds.GList -from metadata.

pythia.iterators._iter_user_meta(container_list: GList, kind: Type[SupportedUserMeta]) Iterator[source]#
pythia.iterators.analytics_per_frame(frame_meta: NvDsFrameMeta) Iterator[NvDsAnalyticsFrameMeta][source]#

Yield frame-level analytics metadata.

Parameters:

frame_meta – deepstream frame-level metadata from nvinfer.

Yields:

analytics metadata. A single frame might have multiple values.

pythia.iterators.analytics_per_obj(object_metadata: NvDsObjectMeta) Iterator[NvDsAnalyticsObjInfo][source]#

Yield analytics metadata from a single object in a frame.

Parameters:

object_metadata – deepstream detection metadata from nvinfer.

Yields:

analytics metadata. A single object might have multiple values.

pythia.iterators.classification_per_object(object_metadata: NvDsObjectMeta) Iterator[NvDsClassifierMeta][source]#

Yield classification metadata from a single object in a frame.

Parameters:

object_metadata – deepstream detection metadata from nvinfer.

Yields:
classification metadata. A single object might have multiple

values.

pythia.iterators.frames_per_batch(batch_meta: NvDsBatchMeta) Iterator[NvDsFrameMeta][source]#

Yield frame metadata from the batch in a buffer.

Parameters:

batch_meta – deepstream batch metadata from a buffer, as received in a bufer pad probe.

Yields:
frame metadata. A single batch might have multiple values when

nvstreammux batches its input frames.

pythia.iterators.glist_iter(container_list: GList, klass: Type[Union[NvDsAnalyticsFrameMeta, NvDsAnalyticsObjInfo, NvDsInferSegmentationMeta, NvDsUserMeta, NvDsLabelInfo, NvDsFrameMeta, NvDsObjectMeta, NvDsClassifierMeta]]) Iterator[source]#

Iterate over pyds.GList objects.

A Pythonic way for iterating over deepstream metadata.

Example

When extracting object metadata from frame_metadata, in c++:

for (
    NvDsMetaList * l_obj = frame_meta->obj_meta_list;
    l_obj != NULL;
    l_obj = l_obj->next
) {
    NvDsObjectMeta *object_meta = (NvDsObjectMeta *) (l_obj->data);
    do_something_with(object_meta);
}

And its equivalent in python:

for object_meta in glist_iter(
    frame_metadata.obj_meta_list,
    pyds.NvDsObjectMeta
):
    do_something_with(object_meta)
Parameters:
  • container_list – The object to iterate over. Its data attribute (PyCapsule) is used to instantiate objects.

  • klass – This class is instantiated via its cast constructor, using container_list.data as its only argument.

Yields:

The Object instantiated when calling the cast function.

pythia.iterators.instance_masks_per_batch(batch_meta: NvDsBatchMeta) Iterator[Tuple[NvDsFrameMeta, NvDsObjectMeta, ndarray]][source]#

Yield frame, object, and mask metadata from the batch in a buffer.

Parameters:

batch_meta – deepstream batch metadata from a buffer, as received in a bufer pad probe.

Yields:
  • frame metadata. A single batch might have multiple values when

    nvstreammux batches its input frames.

  • object metadata. A single frame might have multiple values when

    a single or multiple nvinfer generate multiple detections.

  • instance segmentation. bidimensional matrix.

pythia.iterators.labels_per_classification(classifier_meta: NvDsClassifierMeta) Iterator[NvDsLabelInfo][source]#

Yield label metadata from a single classification in an object.

Parameters:

classifier_meta – deepstream classification metadata from nvinfer.

Yields:
label metadata. A single classification might have multiple

values.

pythia.iterators.labels_per_obj(object_metadata: NvDsObjectMeta) Iterator[NvDsLabelInfo][source]#

Yield label metadata from a single object in a frame.

Parameters:

object_metadata – deepstream detection metadata from nvinfer.

Yields:

label metadata. A single object might have multiple labels.

pythia.iterators.objects_per_batch(batch_meta: pyds.NvDsBatchMeta) Iterator[tuple[pyds.NvDsFrameMeta, pyds.NvDsObjectMeta]][source]#

Yield frame and object metadata from the batch in a buffer.

Parameters:

batch_meta – deepstream batch metadata from a buffer, as received in a bufer pad probe.

Yields:
frame metadata. A single batch might have multiple values when

nvstreammux batches its input frames.

object metadata. A single frame might have multiple values when

a single or multiple nvinfer generate multiple detections.

pythia.iterators.objects_per_frame(frame_meta: NvDsFrameMeta) Iterator[NvDsObjectMeta][source]#

Yield object metadata from a single frame in a batch.

Parameters:

frame_meta – single frame metadata

Yields:
object metadata. A single frame might have multiple values when

a single or multiple nvinfer generate multiple detections.

pythia.iterators.semantic_masks_per_frame(frame_meta: NvDsFrameMeta) Iterator[ndarray][source]#

Yield frame-level semantic segmentation metadata.

Parameters:

frame_meta – deepstream frame-level metadata from nvinfer.

Yields:
semantic segmentation bidimensional matrix. A single frame will

probably have several values.