我有一个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
,反之亦然?