假设我有这个图像,其中是一个对象(一个立方体)。该对象正在被跟踪(带有标签),我设法在其上渲染一个虚拟立方体(增强现实)。现在我可以在其上渲染一个虚拟立方体,我希望能够使用一些称为“修复”的非常基本的减少现实技术使对象“消失”。有问题的修复非常简单(必须如此,否则 FPS 会受到影响),它需要我对像素及其邻居进行一些操作(如高斯模糊或其他基本图像处理)。
为此,我首先需要:
- 面具:黑色背景,里面有一个白色立方体。
- 访问初始图像的每个像素(在坐标 x 和 y 处)及其邻域,并根据掩码在相同 x 和 y 坐标处的像素值进行处理。所以基本上掩码是一种表示忽略这个像素或使用这个像素的方式。
如何使用 OpenGL 执行此操作?由于邻居,我希望能够以 2D 方式逐个访问像素值。
我使用 FBO 还是 PBO?我已经阅读了很多关于缓冲区和方法的内容,glDrawPixels()
但我无法将它们全部放在一起。我看到这种方法的论文使用了GL_BACK
缓冲区,但我的已经使用了。由于我仍然是 OpenGL 的初学者,因此对于所有形式(OpenG` 调用)都会非常感激一些示例代码(C++)。
如果像素操作在 OpenGL 中太难,我什至考虑使用 OpenCV,因为我的 AR 库(Aruco)在 OpenCV 之上工作。在这种情况下,我仍然需要获取蒙版(黑色背景上的白色立方体),将其转换为 acv::Mat
然后进行处理。
我知道这种方法效率低下(从 GPU/CPU 来回切换),但我的目标(目前)是至少让基础工作正常。