Please provide complete information as applicable to your setup.
• Hardware Platform (Jetson / GPU) nano
• DeepStream Version 7.0
• JetPack Version (valid for Jetson only) 6.0
• TensorRT Version8.6.2.3-1+cuda12.2
• NVIDIA GPU Driver Version (valid for GPU only) NVIDIA-SMI 540.2.0
• Issue Type( questions, new requirements, bugs)
How to save face ROI ?
Original Code : DeepStream-Yolo-Face/deepstream.py at master · marcoslucianops/DeepStream-Yolo-Face · GitHub
when I modify def tracker_src_pad_buffer_probe : it return :
gstnvtracker: Loading low-level lib at /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so
gstnvtracker: Failed to open low-level lib at /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so
dlopen error: /lib/aarch64-linux-gnu/libgomp.so.1: cannot allocate memory in static TLS block
gstnvtracker: Failed to initilaize low level lib.
import cv2
import numpy as np
def tracker_src_pad_buffer_probe(pad, info, user_data):
buf = info.get_buffer()
batch_meta = pyds.gst_buffer_get_nvds_batch_meta(hash(buf))
l_frame = batch_meta.frame_meta_list
while l_frame:
try:
frame_meta = pyds.NvDsFrameMeta.cast(l_frame.data)
except StopIteration:
break
current_index = frame_meta.source_id
l_obj = frame_meta.obj_meta_list
while l_obj:
try:
obj_meta = pyds.NvDsObjectMeta.cast(l_obj.data)
except StopIteration:
break
# Process each object here
parse_face_from_meta(frame_meta, obj_meta)
set_custom_bbox(obj_meta)
# Save ROI (Region of Interest) as an image
rect_params = obj_meta.rect_params
top = max(int(rect_params.top), 0)
left = max(int(rect_params.left), 0)
width = max(int(rect_params.width), 0)
height = max(int(rect_params.height), 0)
# Get the frame data
surface = pyds.get_nvds_buf_surface(hash(buf), frame_meta.batch_id)
frame_image = np.array(surface, copy=True, order='C')
# Crop the face ROI from the frame
face_roi = frame_image[top:top+height, left:left+width]
# Define the directory and save path
save_dir = '/home/paymentinapp/DeepStream-Yolo-Face-master/roi'
os.makedirs(save_dir, exist_ok=True)
save_path = os.path.join(save_dir, f"face_{frame_meta.frame_num}_{obj_meta.object_id}.jpg")
# Save the face ROI
cv2.imwrite(save_path, face_roi)
try:
l_obj = l_obj.next
except StopIteration:
break
fps_streams['stream{0}'.format(current_index)].get_fps()
try:
l_frame = l_frame.next
except StopIteration:
break
return Gst.PadProbeReturn.OK