In Jetpack 6.0, How to use argus api (NvBufSurface) transform to cv::Mat

You can transform the NvBufSurface to RGB using:

  1. allocate output Surface in RGB format (I would suggest using RGBA)
NvBufSurface *surfRGB = 0;
NvBufSurfaceAllocateParams input_params = {{0}};
...
input_params.params.colorFormat = NVBUF_COLOR_FORMAT_RGBA;
NvBufSurfaceAllocate(&surfRGB, 1, &input_params);
  1. Transform YUV surface to RGB format:
NvBufSurfTransformParams transform_params = {0};
transform_params.src_top = 0;
transform_params.src_left = 0;
transform_params.src_width =width;
transform_params.src_height = height;
transform_params.dst_top = 0;
transform_params.dst_left = 0;
transform_params.dst_width = width;
transform_params.dst_height = height;
transform_params.flag = NVBUFSURF_TRANSFORM_FILTER;
transform_params.flip = NvBufSurfTransform_None;
transform_params.filter = NvBufSurfTransformInter_Default;

NvBufSurfTransform(surfYUV, surfRGB, &transform_params)
  1. Convert Nvbufsurface to cv::Mat as described here:
    How to convert NvBufSurface to cv::Mat - #7 by ahmed.t.mohamed

Hope this helps you solve your problem.