OpenCV on NVIDIA Jetson Xavier

The company I work for is gearing up to integrate some industrial vision and embedded automation machines into our processes. To locate objects and perform image operations (like image subtraction, thresholding, contours, etc); we’re curious as to the performance of OpenCV 4.x on the Jetson Xavier? The image sizes we’re using can vary anywhere from 2880x2160 to 4k or larger depending on the need.

I’ve read various forum posts on here that NVIDIA supplies an optimized OpenCV package, but are there any resources freely available as to the performance of it? Like, for example, which desktop or brand-name CPU would be comparable?

Also, if OpenCV is built with CUDA (which we can do if it isn’t already from NVIDIA), how quickly does CUDA transfer the images to GPU memory? Considering that there is shared memory on this board, is it instant due the GPU having DMA?

Thanks for your time.

Sorry for the late response, we will investigate this issue to do the update soon.

Hi,
If you need CUDA filters in OpenCV. The data is in cv::gpu::gpuMat, which can be directly accessed through CUDA. The performance is optimal.

If you need OpenCV functions that data is in cv::Mat, it may take certain CPU usage in converting frame data into BGR format, and the functions consume CPU also.

For demo of using CUDA filters, please take a look at
LibArgus EGLStream to nvivafilter - #14 by DaneLLL

Hi DaneLLL,

Thanks for your response. Maybe I should clarify what I mean a little more… I know how to use OpenCV and its CUDA functionality, but my question is more related to its performance on the Jetson. For example, are there any available time studies that I could look into that break out the time spent doing an operation with OpenCV on the device? Or, could you tell me what the FPS, for example, would be for 4k images using the aforementioned processes? I mean, even a demo on high resolution images using any OpenCV operation would be enough to give me a feel for the capabilities of the Xavier.

But I also do need to know the overhead of loading images into GPU-memory (if there is such a dedicated area in the Jetson). That is probably the question I need answered most of all.

I ask because we are getting close to having to choose between an expensive, vendor-supplied computer, or the Jetson with no room in the budget to get both. I’d rather save the money if I can get the same relative performance of the vender computer in the Xavier.

Thank you for your time,
Jules

Hi,
We don’t have existing data for this. But if the resolution is 4K, we would suggest use gstreamer or jetson_multimedia_api, on Jetson platforms. Using OpenCV would take high CPU usage and may not achieve target performance.