首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cuda ORB描述符Opencv

Cuda ORB描述符Opencv
EN

Stack Overflow用户
提问于 2018-01-19 16:21:10
回答 1查看 809关注 0票数 2

我正在尝试用OpenCV在CUDA上做一个特征匹配算法。我正在使用ORB特性。我遇到的主要问题是我能够很好地计算ORB关键点,但是描述符总是空的。我试了所有的方法,但都没有成功。我尝试了opencv的最新版本(3.4.0)和3.2.0版本。这是我的代码的简化版本:

代码语言:javascript
复制
cv::Ptr<cv::cuda::ORB> orb_gpu = cv::cuda::ORB::create(5000);
std::vector<cv::KeyPoint> keypoints;
cv::cuda::GpuMat descriptors;
cv::cuda::GpuMat img_gpu(curr_frame);
orb_gpu->detect(img_gpu, keypoints); 
orb_gpu->compute(img_gpu, keypoints, descriptors);
cv::Mat desc_cpu;
descriptors.upload(desc_cpu);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-19 18:16:57

问题与内存复制的方向有关。您正在调用upload而不是download函数来将描述符从设备复制到主机。下面这行代码是罪魁祸首:

代码语言:javascript
复制
descriptors.upload(desc_cpu);

将其替换为:

代码语言:javascript
复制
descriptors.download(desc_cpu);

upload从主机拷贝到设备,而download从设备拷贝到主机。

我已经在Ubuntu14.04上用CUDA8编译的OpenCV 3.4测试和验证了这个例子。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48336782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档