【问题标题】:How to convert GpuMat to CvMat in OpenCV?如何在 OpenCV 中将 GpuMat 转换为 CvMat?
【发布时间】:2011-10-21 09:11:19
【问题描述】:

我知道如何做相反的事情,即使用上传从CvMat 获取GpuMat,但我需要从GpuMat 获取CvMat,有什么方法可以用于此吗?

【问题讨论】:

  • 代码对您有帮助吗?如果没有,请让我知道我可以纠正它。如果是,请接受...
  • 我还在尝试,不知道这个或其他 gpu 代码是否有问题,我正在研究实时 GPU SURF 很快就会评分

标签: opencv gpu


【解决方案1】:

显式转换:Mat -> GPUMat

Mat myMat;
GpuMat myGpuMat;
myGpuMat.upload(myMat); //Via a member function
//Or
GpuMat myGpuMat(myMat) //Via a constructor
//Use myGpuMat here...

隐式转换:GpuMat -> Mat

GpuMat myGpuMat;
Mat myMat = myGpyMat;
//Use myMat here...

希望对你有所帮助, 朱利安,

【讨论】:

  • 可惜原作者不接受,这对我很有帮助。
  • 这似乎有效(原来的错误消失了)但导致了这个难以理解的错误:1>cuda初学者.obj:错误LNK2019:未解析的外部符号“double __cdecl cv::gpu::threshold(类 cv::gpu::GpuMat const &,类 cv::gpu::GpuMat &,double,double,int,类 cv::gpu::Stream &)" (?threshold@gpu@cv@@YANAEBVGpuMat@12 @AEAV312@NNHAEAVStream@12@@Z) 在函数“int __cdecl _tmain(void)”(?_tmain@@YAHXZ)中引用
  • @johnktejik,我本人是 opencv 的新手,但您是否构建了支持 GPU 的 opencv 库?
  • gpuMat 有一个方法: void download (OutputArray dst) const 执行从设备到主机内存的下载数据(阻塞调用)所以: myGpuMat.download(myMat);
【解决方案2】:

win 7,64位,openCV 2.4

GpuMat --> Mat:

cv::gpu::GpuMat dst;
cv::Mat tran(dst);

如您所见,dstGpuMattranMat

【讨论】:

  • 我明白了:cuda 初学者.cpp(15): error C3861: 'tran': identifier not found
猜你喜欢
  • 2015-05-28
  • 2012-03-08
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多