OpenGL渲染到Framebuffer,转移到OpenCV Umat进行OpenCL加速处理

时间:2015-07-08 05:52:59

标签: opencv opengl rendering opencl gpu

在OpenCV的旧版本中,我可以使用OpenGL渲染到后台缓冲区,使用glreadpixels将像素“复制”到OpenCV图像(iplimage?)进行一些处理(模糊,与另一个OpenCV加载的模板匹配)图片)。然而,这将花费我从GPU到CPU的转移,然后如果我想显示它,回到GPU。

现在我可以通过使用clEnqueueAcquireGLObjects来完成与OpenGL和OpenCL类似的操作,而我根本不需要传输。我将OpenGL呈现给Framebuffer,让OpenCL控制它。

然而,这迫使我编写自己的OpenCL内核(没有人有时间......在Nvidia上调试OpenCL实际上非常困难),无论我想做什么处理。既然OpenCV有一些很好的OpenCL加速流程,我想尝试一下。

所以我的问题:是否可以渲染到Framebuffer(或GPU上的另一个GL上下文),控制(或复制)OpenCV上下文(umat?)以进行OpenCL加速处理?如果是这样,如何(大图,关键组件)?

我有一种感觉,我可以使用cv::ogl::Buffer来包装缓冲区,但文档并不完全清楚,然后使用ogl::Buffer::copyTo复制它。类似:Is it possible to bind a OpenCV GpuMat as an OpenGL texture?

其他参考:Transfer data from Mat/oclMat to cl_mem (OpenCV + OpenCL)

0 个答案:

没有答案