"frame_copy = np.array(n_frame, copy=True, order='C')" causes the program to terminate

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU) T1000
• DeepStream Version 6.1
• JetPack Version (valid for Jetson only)
• TensorRT Version nv-tensorrt-repo-ubuntu2004-cuda11.6-trt8.4.3.1-ga-20220813
• NVIDIA GPU Driver Version (valid for GPU only) 515.65.01
• Issue Type( questions, new requirements, bugs) Running the “frame_copy = np.array(n_frame, copy=True, order=‘C’)” code causes the program to terminate without prompting
• How to reproduce the issue ? (This is for bugs. Including which sample app is using, the configuration files content, the command line used and other details for reproducing)
• Requirement details( This is for new requirement. Including the module name-for which plugin or for which sample application, the function description)

My program is python
my pipeline looks like this rtspsrc-> rtph264depay → h264parse → tee → queue → decodebin → queue → tee → nvvideoconvert → capsfilter(“video/x-raw(memory:NVMM)”) → nvstreammux → pgie → tracker → nvvideoconvert → capsfilter(“video/x-raw(memory:NVMM), format=RGBA”) → nvmultistreamtiler → nvvideoconvert → nvdsosd → nveglglessink

and my tiler add probe tiler_sink_pad_buffer_probe

        tiler_sink_pad = self.tiler.get_static_pad("sink")
        tiler_sink_pad.add_probe(Gst.PadProbeType.BUFFER, tiler_sink_pad_buffer_probe, self)  

When I run the following code in tiler_sink_pad_buffer_probe function, the program stops running without prompting
, The program stops running when I run the following code

        # Getting Image data using nvbufsurface
        # the input should be address of buffer and batch_id
        n_frame = pyds.get_nvds_buf_surface(hash(gst_buffer), frame_meta.batch_id)
        print('代码第{}行, 函数名称 {}'.format(sys._getframe().f_lineno, sys._getframe().f_code.co_name))
        
        # convert python array into numpy array format in the copy mode.
        frame_copy = np.array(n_frame, copy=True, order='C')
        print('代码第{}行, 函数名称 {}'.format(sys._getframe().f_lineno, sys._getframe().f_code.co_name))
        
        # convert the array into cv2 default color format
        frame_copy = cv2.cvtColor(frame_copy, cv2.COLOR_RGBA2BGR)
        print('代码第{}行, 函数名称 {}'.format(sys._getframe().f_lineno, sys._getframe().f_code.co_name))
        print("frameNum [%d] is source_id [%d]" % (frame_meta.batch_id, frame_meta.source_id))


If I comment this code, the program works

image

I don’t know why “frame_copy = np.array(n_frame, copy=True, order=‘C’)” causes the program to terminate. Expect a solution

What is the memory type for your nvvideoconvert?
You will need to set to "nvbuf-memory-type" to 3 (Unified Memory) on dGPU.

2 Likes

Thanks for your answer, I solved the problem, I forgot to set it。

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.