将gpu数据从python(pycuda gpuarray)交换到opencv(cv::cuda::GpuMat),反之亦然
我有一个pycuda gpuarray,我想将它提供给opencv cuda函数。据我所知,opencv 3 cv::cuda模块目前没有python绑定。因此,我尝试编写自己的python包装器来访问cv::cuda函数(在我的例子中是cv::cuda::HOG类) 不幸的是,当涉及到数据交换的核心部分时,我遇到了一个障碍。我知道你可以使用这样的结构将gpu数据从python(pycuda gpuarray)交换到opencv(cv::cuda::GpuMat),反之亦然,python,opencv,pycuda,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 tes
static PyObject* my_function(PyObject* self, PyObject* args)
{
int test;
PyArg_ParseTuple(args, "t", &test);
}
传递基本数据类型,但我不知道如何使用gpu内存上的指针(在我的例子中是gpuarray.gpudata
)。我的理解是,gpuarray.gpudata
根据gpuarray
的dtype
生成指针,但在gpu上
因此,python方面的情况如下所示:
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)
在C++方面,我必须使用<代码> CV:CUDA::GpuMat < /代码>,所以我如何从<代码> GPUARCUL.GPUATA < /C> >到<代码> CV: CUDA::GpuMat < /代码>,反之亦然?