OpenCV Error: No CUDA support

Please provide complete information as applicable to your setup.

**• Hardware Platform (Jetson / GPU) Jetson AGX Xavier
**• DeepStream Version 5.0
**• JetPack Version (valid for Jetson only) 4.4

I am adding radial undistort function into gst-dsexample.cpp and get compilation through without problem. But when I run the pipeline. I got this error message:

OpenCV Error: No CUDA support (The library is compiled without CUDA support) in throw_no_cuda, file /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/core/include/opencv2/core/private.cuda.hpp, line 97
terminate called after throwing an instance of 'cv::Exception'

What I add in the gstdsexample.h:

#include “opencv2/calib3d/calib3d.hpp”
#include “opencv2/core/core.hpp”
#include “opencv2/core/cuda.hpp”


static cv::cuda::GpuMat gpu_xmap, gpu_ymap;

in gstdsexample.cpp

I call init_undistort_map in gst_dsexample_start, where init_undistort_map is defined as below:

static gboolean
init_undistort_map(GstDsExample * dsexample)
	//create xmap,ymap and load them to gpumat
	  int max_width = dsexample->processing_width;
	  int max_height = dsexample->processing_height;
	  /* Initialize maps from CPU */
	  cv::Mat xmap(max_height, max_width, CV_32FC1);
	  cv::Mat ymap(max_height, max_width, CV_32FC1);
	  cv::Mat cam(3, 3, cv::DataType<float>::type);<float>(0, 0) = 825.47875363f;<float>(0, 1) = 0.0f;<float>(0, 2) = 626.52873675f;<float>(1, 0) = 0.0f;<float>(1, 1) = 828.1890254f;<float>(1, 2) = 356.23308552f;<float>(2, 0) = 0.0f;<float>(2, 1) = 0.0f;<float>(2, 2) = 1.0f;

	  cv::Mat dist(4, 1, cv::DataType<float>::type);<float>(0, 0) = -0.4273608f;<float>(1, 0) = 0.16401622f;<float>(2, 0) = 0.00057418f;<float>(3, 0) = -0.00062927f;
	  //<float>(4, 0) = -0.0273251f;

	  cv::fisheye::initUndistortRectifyMap(cam, dist, cv::Mat(), cam, cv::Size(max_width, max_height), CV_32FC1, xmap, ymap);

	  /* upload to GpuMats */

	  return TRUE;

and call undistort in gst_dsexample_transform_ip, where undistort is defined as below:

 * Radial Undistort transformation (full-frame=0 and blur_objects=true)
static GstFlowReturn
    undistort (GstDsExample * dsexample, cv::Mat in_mat)
      //cv::Rect crop_rect;


      return GST_FLOW_OK;

What am I missing? Please help! Thanks a lot.

see this link for opencv cuda support in AGX Xavier

1 Like

Hi @ynjiun,
Sorry for late reply!
The default OpenCV installed via SDKManager is not CUDA accelerated, so when you use “cv::cuda::GpuMat” with this opencv, it’s expected to report the “No CUDA support” error.

You may could uninstall current OpenCV and re-build a CUDA based opencv.