Getting frames from CSI camera to cv::Mat. libArgus -> cv::Mat ??????????????????

Was anyone able to get 1080p 60fps stream to Opencv.

Hi Ttheekshana,

Which camera are you using?

Hi, I am also trying to get Argus::UniqueObjEGLStream::Frame frame(iFrameConsumer->acquireFrame to cv::Mat from my CSI camera. How would i do this in c++? I am using LI IMX185

EGLStream::IFrame *iFrame = Argus::interface_cast<EGLStream::IFrame> (frame);
        EGLStream::Image *image = iFrame->getImage();
        EGLStream::NV::IImageNativeBuffer *iImageNativeBuffer = interface_cast<EGLStream::NV::IImageNativeBuffer> (image);
        Argus::Size2D<uint32_t> size(1920, 1080);
        int dmabuf_fd = iImageNativeBuffer->createNvBuffer(size, NvBufferColorFormat_YUV420, NvBufferLayout_Pitch, &status);
        void *data_mem1;
        void *data_mem2;
        void *data_mem3;
        mYcbcrImg.clear();
        NvBufferMemMap(dmabuf_fd, 0, NvBufferMem_Read_Write, &data_mem1);
        NvBufferMemSyncForCpu(dmabuf_fd, 0 , &data_mem1);
        NvBufferMemSyncForDevice(dmabuf_fd, 0 , &data_mem1);
        mYcbcrImg.push_back(cv::Mat(1080, 1920, CV_8UC1, data_mem1, 2048));
        NvBufferMemMap(dmabuf_fd, 1, NvBufferMem_Read_Write, &data_mem2);
        NvBufferMemSyncForCpu(dmabuf_fd, 1 , &data_mem2);
        NvBufferMemSyncForDevice(dmabuf_fd, 1 , &data_mem2);
        mYcbcrImg.push_back(cv::Mat(540, 960, CV_8UC1, data_mem2, 1024));
        NvBufferMemMap(dmabuf_fd, 2, NvBufferMem_Read_Write, &data_mem3);
        NvBufferMemSyncForCpu(dmabuf_fd, 2 , &data_mem3);
        NvBufferMemSyncForDevice(dmabuf_fd, 2 , &data_mem3);
        mYcbcrImg.push_back(cv::Mat(540, 960, CV_8UC1, data_mem3, 1024));
        mgpuYcbcrImg.push_back ( resizeOnGpu ( mYcbcrImg[0] ) );
        mgpuYcbcrImg.push_back ( resizeOnGpu ( mYcbcrImg[1] ) );
        mgpuYcbcrImg.push_back ( resizeOnGpu ( mYcbcrImg[2] ) );
        cv::cuda::merge ( mgpuYcbcrImg, mgpuImage );
        cv::cuda::cvtColor ( mgpuImage,mgpuImage,CV_YCrCb2RGB );

Thank you Ttheekshana, it worked!