gpt4 book ai didi

c++ - Cuda ORB 描述符 Opencv

转载 作者:搜寻专家 更新时间:2023-10-31 02:07:39 25 4
gpt4 key购买 nike

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

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);

最佳答案

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

descriptors.upload(desc_cpu);

替换为:

descriptors.download(desc_cpu);

upload 从主机复制到设备,而 download 从设备复制到主机。

我已经在 Ubuntu 14.04 上使用 CUDA 8 编译的 OpenCV 3.4 测试并验证了示例。

关于c++ - Cuda ORB 描述符 Opencv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48336782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com