如何访问gpuMat中的数据?

时间:2017-01-18 08:05:15

标签: c++ opencv cuda

opencv document about gpu::orb

我想用gpu :: orb获取图像的关键点,关键点的类型是gpuMat。然后我试图访问gpuMat的数据作为文档。

我尝试使用以下代码:(关键点是gpumat)

cout<<keypoints.ptr<float>(3)[4]<<endl;

但我得到了一个&#34;分段错误(核心转储)&#34;。我知道我们无法修改gpuMat中的数据。那么如何才能获取gpuMat中的数据呢? / p>

1 个答案:

答案 0 :(得分:2)

根据OpenCV documentation cv::cuda::GpuMat是:

  

使用引用计数基于 GPU内存的存储类。它的接口与Mat接口匹配,具有以下限制:

     
      
  • 没有任意尺寸支持(仅限2D)
  •   
  • 没有返回对其数据的引用的函数(因为GPU上的引用对CPU无效
  •   
  • 没有表达模板技术支持
  •   

ptr将返回指向设备内存的指针。您无法直接从主机读取设备内存。为了在operator <<等主机函数中使用数据,需要使用GpuMat::download(cv::Mat& m)将数据复制到主机内存。