Ask Your Question

OpenCV 3.1 Cuda FAST algorithm

asked 2016-05-14 07:30:13 -0500

Avii gravatar image

Hello, I'd like to use the FAST algorithm on my GPU. The picure is stored in a Mat frame. What I got so far:

cuda::GpuMat gpuImg0;
cuda::GpuMat gpuInput_gray(gpuImg0.size(), gpuImg0.type());
cv::cuda::cvtColor(gpuImg0, gpuInput_gray, COLOR_BGR2GRAY);
cv::Ptr<cv::cuda::FastFeatureDetector> d_fast = cv::cuda::FastFeatureDetector::create(20, 1,cv::FastFeatureDetector::TYPE_9_16);
std::vector<cv::KeyPoint> d_keypoints;
d_fast->detect(gpuInput_gray, gpu_keypoints);

But now I have the keypoints stored in gpu_keypoints. I do not know how to get them back to the CPU or write them in a GpuMat. In OpenCV 2.x i could use the function drawKeypoints, but it's disabled in 3.x. How to do it now?

Greetings :)


edit retag flag offensive close merge delete

1 answer

Sort by » oldest newest most voted

answered 2016-05-14 11:11:27 -0500

FastFeatureDetector->detetct gets GpuMat and vector of key points which is std::vector<cv::keypoint> d_keypoints; in your code. These key points are already downloaded from GPU to CPU you can use them directly. If you look at the code you can see that keypoints on the GPU are converted to CPU and what you get is these keypoints stored on CPU. code:</cv::keypoint>

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2016-05-14 07:30:13 -0500

Seen: 882 times

Last updated: May 14 '16