指向OpenCV gpu的c++指针

C++ Pointer to OpenCV GpuMat

本文关键字:c++ 指针 gpu OpenCV 指向      更新时间:2023-10-16

我在win8.1 64位机器上使用OpenCV 3.0与VS2012 c++/CLI。

我想知道创建一个指向Gpumat的c++指针的正确方法是什么。

目前,我定义了一些指针,如:

cuda::GpuMat *d_gpuLoadFrame;
cuda::GpuMat *d_gpuLoadFrameClone;
cuda::GpuMat *d_gpuAnalysisFrame;
cuda::GpuMat *d_gpuGrayFrame;
cuda::GpuMat *d_gpuMaskFrame;
cuda::GpuMat *d_gpuFalseMaskFrame;

然后我像这样分配指针:

d_gpuLoadFrame = new cuda::GpuMat();
d_gpuLoadFrameClone = new cuda::GpuMat();
d_gpuAnalysisFrame = new cuda::GpuMat();
d_gpuGrayFrame = new cuda::GpuMat();
d_gpuMaskFrame = new cuda::GpuMat();
d_gpuFalseMaskFrame = new cuda::GpuMat();
d_gputFrame = new cuda::GpuMat();

我看到一些奇怪的行为,这让我认为这可能是错误的。例如,我上传一个标准Mat到其中的一些,并以各种方式克隆它们,它看起来像c++指针正在丢失。

我是否需要做一些不同的事情来跟踪gpumat,以便它们在我从一个函数移动到另一个函数时不会被破坏?

不需要以您所展示的方式提供指针。只需在调用函数的实际参数中写入名称,即可将GpuMat文件传递给函数。而在函数端,可以使用如下所示的引用来访问它:
GpuMat abc; foo(abc); //at the function definition void foo(GpuMat& abc) { ... }