Jetson Nano
Jetpack 4.5
Deepstream 5.1
I have a single source single stream setup.
I tried using this solution for single stream but the FPS result is returned as None
Jetson Nano
Jetpack 4.5
Deepstream 5.1
I have a single source single stream setup.
I tried using this solution for single stream but the FPS result is returned as None
Please read the code in apps/common/FPS.py. get_fps() is not to get FPS value so there is no result. You can not print the result. It is open source, please use it as the code itself.
Oh I understand my mistake, So just calling function should do make it work.
But in just calling the function like this
fps_stream=GETFPS(0)
fps_stream.get_fps()
Yields the same result as “None”
Am I still missing something ?
Can you upload the whole code but not pieces? Where did you get “None”.
You must run fps_stream.get_fps() in a loop thread. Please read the code.
The code
while l_frame is not None:
try:
# Note that l_frame.data needs a cast to pyds.NvDsFrameMeta
# The casting is done by pyds.glist_get_nvds_frame_meta()
# The casting also keeps ownership of the underlying memory
# in the C code, so the Python garbage collector will leave
# it alone.
#frame_meta = pyds.glist_get_nvds_frame_meta(l_frame.data)
frame_meta = pyds.NvDsFrameMeta.cast(l_frame.data)
except StopIteration:
break
frame_number=frame_meta.frame_num
num_rects = frame_meta.num_obj_meta
l_obj=frame_meta.obj_meta_list
while l_obj is not None:
try:
# Casting l_obj.data to pyds.NvDsObjectMeta
#obj_meta=pyds.glist_get_nvds_object_meta(l_obj.data)
obj_meta=pyds.NvDsObjectMeta.cast(l_obj.data)
except StopIteration:
break
obj_counter[obj_meta.class_id] += 1
obj_meta.rect_params.border_color.set(0.0, 0.0, 1.0, 0.0)
rect_params = obj_meta.rect_params
#print("Name = {} ,Top = {}, Left = {}, Height = {}, Width = {}".format(pgie_classes_str[obj_meta.class_id],int(rect_params.top),int(rect_params.left),int(rect_params.height),int(rect_params.width)))
print("Class_ID =",obj_meta.class_id)
try:
l_obj=l_obj.next
except StopIteration:
break
# Acquiring a display meta object. The memory ownership remains in
# the C code so downstream plugins can still access it. Otherwise
# the garbage collector will claim it when this probe function exits.
display_meta=pyds.nvds_acquire_display_meta_from_pool(batch_meta)
display_meta.num_labels = 1
py_nvosd_text_params = display_meta.text_params[0]
# Setting display text to be shown on screen
# Note that the pyds module allocates a buffer for the string, and the
# memory will not be claimed by the garbage collector.
# Reading the display_text field here will return the C address of the
# allocated string. Use pyds.get_string() to get the string content.
fps_stream=GETFPS(1)
fps_stream.get_fps()
# Now set the offsets where the string should appear
py_nvosd_text_params.x_offset = 10
py_nvosd_text_params.y_offset = 12
# Font , font-color and font-size
py_nvosd_text_params.font_params.font_name = "Serif"
py_nvosd_text_params.font_params.font_size = 10
# set(red, green, blue, alpha); set to White
py_nvosd_text_params.font_params.font_color.set(1.0, 1.0, 1.0, 1.0)
# Text background color
py_nvosd_text_params.set_bg_clr = 1
# set(red, green, blue, alpha); set to Black
py_nvosd_text_params.text_bg_clr.set(0.0, 0.0, 0.0, 1.0)
# Using pyds.get_string() to get display_text as string
print(pyds.get_string(py_nvosd_text_params.display_text))
pyds.nvds_add_display_meta_to_frame(frame_meta, display_meta)
try:
l_frame=l_frame.next
except StopIteration:
break
Also I have used the imports
import sys
sys.path.append('../')
import gi
import time
gi.require_version('Gst', '1.0')
from gi.repository import GObject, Gst
from common.is_aarch_64 import is_aarch64
from common.bus_call import bus_call
from common.FPS import GETFPS
import pyds
You can not use “fps_stream=GETFPS(1)” in the loop thread. Please place it in main thread. I think we already have such sample in deepstream-test3