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