opencv document about gpu::orb
我想用gpu :: orb获取图像的关键点,关键点的类型是gpuMat。然后我试图访问gpuMat的数据作为文档。
我尝试使用以下代码:(关键点是gpumat)
cout<<keypoints.ptr<float>(3)[4]<<endl;
但我得到了一个&#34;分段错误(核心转储)&#34;。我知道我们无法修改gpuMat中的数据。那么如何才能获取gpuMat中的数据呢? / p>
答案 0 :(得分:2)
根据OpenCV documentation cv::cuda::GpuMat
是:
使用引用计数基于 GPU内存的存储类。它的接口与Mat接口匹配,具有以下限制:
- 没有任意尺寸支持(仅限2D)
- 没有返回对其数据的引用的函数(因为GPU上的引用对CPU无效)
- 没有表达模板技术支持
ptr
将返回指向设备内存的指针。您无法直接从主机读取设备内存。为了在operator <<
等主机函数中使用数据,需要使用GpuMat::download(cv::Mat& m)
将数据复制到主机内存。