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”
and
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);
cam.at<float>(0, 0) = 825.47875363f;
cam.at<float>(0, 1) = 0.0f;
cam.at<float>(0, 2) = 626.52873675f;
cam.at<float>(1, 0) = 0.0f;
cam.at<float>(1, 1) = 828.1890254f;
cam.at<float>(1, 2) = 356.23308552f;
cam.at<float>(2, 0) = 0.0f;
cam.at<float>(2, 1) = 0.0f;
cam.at<float>(2, 2) = 1.0f;
cv::Mat dist(4, 1, cv::DataType<float>::type);
dist.at<float>(0, 0) = -0.4273608f;
dist.at<float>(1, 0) = 0.16401622f;
dist.at<float>(2, 0) = 0.00057418f;
dist.at<float>(3, 0) = -0.00062927f;
//dist.at<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 */
gpu_xmap.upload(xmap);
gpu_ymap.upload(ymap);
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;
remap(in_mat,in_mat,gpu_xmap,gpu_ymap,cv::INTER_LINEAR);
return GST_FLOW_OK;
}
What am I missing? Please help! Thanks a lot.