Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将gpu数据从python(pycuda gpuarray)交换到opencv(cv::cuda::GpuMat),反之亦然_Python_Opencv_Pycuda - Fatal编程技术网

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

将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

我有一个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
根据
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 < /代码>,反之亦然?