1

我正在尝试创建一个小项目,其中我需要捕获/读取视频帧缓冲区并计算屏幕的平均 RGB 值。
我不需要在屏幕上写任何东西。我在 Windows 中这样做。

任何人都可以帮助我使用任何 Windows API 来读取视频帧缓冲区并计算平均 RGB 值吗?

我开始知道我需要编写一个内核驱动程序来读取帧缓冲区。

  1. 这是唯一的解决方案吗?
  2. 还有其他读取帧缓冲区的方法吗?
  3. 是否有一种算法可以从帧缓冲区数据计算 RGB 值?
4

1 回答 1

1

如果您想要非常好的性能,您可能必须使用 directx 并将后缓冲区捕获到纹理。使用 mipmaps,它会自动创建下采样到 1X1。只要抓住那 1 个像素的颜色,就可以了。

不过,祝你好运。在我们说话的时候,我正在努力实现这一点。我正在为我的房间创建环境光控制。使用设备上下文和 StretchBLT,我得到了大约 15FPS。只有当我使用 GetPixel() 抓取 1 个像素时才能获得不错的性能。那是 i5 3570K @ 4.5GHz

但是使用 directx 方法,从技术上讲,您可以每秒获得数百甚至数千帧。(当我制作一个旋转三角形时,我的 660 获得大约 24,000 FPS。它不会太慢,减去 CPU 调用。)

于 2013-07-18T23:47:59.670 回答