在OpenCV的旧版本中,我可以使用OpenGL渲染后备缓冲区,用于glreadpixels将像素"复制"到OpenCV图像(iplimage?)进行一些处理(模糊,与另一个加载OpenCV的图像匹配模板).然而,这将花费我从GPU到CPU的转移,然后如果我想显示它,回到GPU.
现在我可以使用OpenGL和OpenCL做类似的事情,通过使用clEnqueueAcquireGLObjects,我根本不需要传输.我将OpenGL渲染为Framebuffer,让OpenCL控制它.
然而,这迫使我编写自己的OpenCL内核(没有人有时间......实际上非常难以在Nvidia上调试OpenCL),无论我想做什么处理.既然OpenCV有一些很棒的OpenCL加速流程,我想尝试一下.
所以我的问题是:是否可以渲染到Framebuffer(或GPU上的另一个GL上下文),控制(或复制)OpenCV上下文(umat?)以进行OpenCL加速处理?如果是这样,如何(大图,关键组件)?
我有一种感觉,我可以cv::ogl::Buffer用来包装缓冲区,但文档并不完全清楚,然后使用它来复制它ogl::Buffer::copyTo.类似:是否可以将OpenCV GpuMat绑定为OpenGL纹理?