opencv - 将数据从 Mat/oclMat 传输到 cl_mem (OpenCV + OpenCL)

标签 opencv opencl

我正在从事一个需要大量 OpenCL 代码的项目。我正在使用 OpenCV 的 ocl 模块来更快地开发我的项目,但是有些功能没有实现,我将不得不编写自己的 OpenCL 代码。

我的问题是:将数据从 Mat 和/或 oclMat 传输到 cl_mem 数组的最快和最便宜的方法是什么。换句话说,是否有从 oclMat 或 Mat 传输或入队(clEnqueueWriteBuffer)数据的好方法?

目前,我正在使用 for 循环从 Mat 读取数据(或从 oclMat 下载然后使用 for 循环),然后将其排队。事实证明这是昂贵的,因此我的问题。

感谢看到这个问题的人:)

最佳答案

我为 Boost.Compute 编写了一组互操作函数简化 OpenCL 和 OpenCV 使用的库。看看 opencv_copy_mat_to_buffer() 功能。

还有从 OpenCL 缓冲区复制回主机的函数 cv::Mat并用于复制 cv::Mat到 OpenCL image2d对象。

关于opencv - 将数据从 Mat/oclMat 传输到 cl_mem (OpenCV + OpenCL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21356592/

相关文章:

python - 在 OpenCV python 中测量点到掩码的距离

c++ - 无法访问 IplImage 数据

Python Tkinter GUI 执行 python 脚本错误

android - "Highgui.imread"命令对 OpenCV Android 不起作用

c++ - 使用 odeint 和 VexCL 在不同设备上产生不同结果的 Lorenz 示例

opengl-es - 如何使用 OpenGL SL 进行通用计算

python - 查找两个图像的像素差异时出现IndexError

c++ - 使用 clEnqueueWriteBuffer 的内存损坏 - OpenCL

c++ - Opencv-ocl 可以用不同的硬件执行吗?

c - OpenCL 我需要释放主机指针吗