从python(pycuda gpuarray)到opencv(cv :: cuda :: GpuMat)交换gpu数据,反之亦然

时间:2016-02-25 20:54:42

标签: python opencv pycuda

我有一个pycuda gpuarray,我想提供给opencv cuda函数。据我所知,目前opencv 3 cv :: cuda模块没有python绑定。所以我尝试编写自己的python包装器来访问cv :: cuda函数(在我的例子中是cv :: cuda :: HOG类)。

不幸的是,当谈到数据交换的核心部分时,我遇到了障碍。我知道你可以使用像

这样的结构
static PyObject* my_function(PyObject* self, PyObject* args)
{
  int test;
  PyArg_ParseTuple(args, "t", &test);
}

传递基本数据类型,但我不知道如何使用指向gpu内存的指针(在我的情况下为gpuarray.gpudata)。我的理解是gpuarray.gpudata根据dtype的{​​{1}}但是在gpu上产生指针。

所以在python方面,事情看起来像这样:

gpuarray

在C ++方面,我必须使用input_gpu = gpuarray.zeros(shape=(3,3), dtype=numpy.float32) output_gpu = gpuarray.zeros(shape=(3,3), dtype=numpy.float32) my_function(input.gpudata, output.gpudata) ,那么如何从cv:cuda::GpuMat转到gpuarray.gpudata,反之亦然?

0 个答案:

没有答案