2011-08-06 71 views
5

我知道如何做到相反,即从CvMat得到GpuMat使用上传,但我需要CvMatGpuMat,有没有任何方法可以用于此?如何将OpenCV中的GpuMat转换为CvMat?

+0

代码对你有帮助吗?如果没有,请让我知道我可以纠正它。如果是这样,请接受它... – jmartel

+0

我仍在尝试,不知道如果问题是与这个或其他GPU代码,我正在实时GPU SURF将速度很快 –

回答

18

显式转换:垫 - > GPUMat

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

隐式转换:GpuMat - >垫

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

希望它能帮助, 朱利安,

+0

太原创作者不会接受,这明确帮助了我。 –

+0

这似乎工作(原来的错误消失),但导致这个无法比拟的错误:1> cuda beginner.obj:错误LNK2019:无法解析的外部符号“双__cdecl cv :: gpu ::阈值(类cv :: gpu :: GpuMat const&,class cv :: gpu :: GpuMat&,double,double,int,class cv :: gpu :: Stream&)“(?threshold @ gpu @ cv @@ YANAEBVGpuMat @ 12 @ AEAV312 @ NNHAEAVStream @ 12 @ @Z)在函数“int __cdecl _tmain(void)”(?_tmain @@ YAHXZ)中引用 –

+0

@johnktejik,我自己是opencv的新手,但是您是否构建了具有GPU支持的opencv库? – MuneshSingh

1

在Win 7 ,64位,openCV 2.4

GpuMat - >Mat

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

正如你可以看到dstGpuMat,并tranMat

+0

我得到这个:cuda beginner.cpp(15):错误C3861:'tran':标识符未找到 –

+0

这对我有用! – alap