Consider the official deepstream example
deepstream_test1_rtsp_in_rtsp_out.py that can be found here: deepstream_python_apps/deepstream_test1_rtsp_in_rtsp_out.py at master · NVIDIA-AI-IOT/deepstream_python_apps · GitHub
As you can see, at line 59 of the script, you can find the function
tiler_src_pad_buffer_probe. This function is not currently used in the example. You can simply double check it with a Ctrl-F.
I’d like to use that function to retrieve the metadata associated to each stream.
So far I have been able to do this:
osdsinkpad = nvosd.get_static_pad("sink") if not osdsinkpad: sys.stderr.write(" Unable to get sink pad of nvosd \n") osdsinkpad.add_probe(Gst.PadProbeType.BUFFER, self.tiler_src_pad_buffer_probe, 0)
This let me retrieve the number of detections but unfortunately, since
nvosd is placed after
nvmultistreamtiler it won’t allow me to discern the streams. In fact I believe that after the
nvmultistreamtiler there will be a unique stream. In fact,
frame_meta.pad_index in function
tiler_src_pad_buffer_probe will always return 0.
I tried this:
osdsinkpad = nvosd.get_static_pad("pgie") if not osdsinkpad: sys.stderr.write(" Unable to get sink pad of pgie \n") osdsinkpad.add_probe(Gst.PadProbeType.BUFFER, self.tiler_src_pad_buffer_probe, 0)
Unfortunately this does not work as it does not retrieve any metadata. It does not throw any error, but the number of people and vehicles are always 0 even if I can see that the pipeline has detected them because I see cars bounding boxes in the output rtsp stream.
How can I retrieve the metadata associated to the object detection to each stream? I’d like know the bounding boxes and detection class of each object detected in each stream.
- stream 1 has 1 car at position x0,y0
- stream 2 has has 2 cars at position x1,y1 and x2,y2
- stream 3 has 0 cars