我正在编写一个程序,它会实时对来自网络摄像头的图像进行一些转换。与几乎所有其他网络摄像头一样,我的 noname 提供 YUY2 格式的数据(如 bmiHeader.biCompression 中所写)。我根据 http://www.fourcc.org/yuv.php#YUY2 在 CPU 端尝试了直接转换, 但它非常缓慢且错误 :)。
当我将源输出引脚连接到渲染器时,图片和帧率都很好。
所以我正在寻找一个 DirectShow 过滤器,或者,也许,一些编解码器,它将在视频卡上从 YUY2 快速转换为 RGB24,并且会在不在屏幕上渲染的情况下给我结果。
我正在使用:
- 32 位 Windows XP SP3。
- VC++ 2005
- 最近下载了 Windows SDK。
- DirectX 2009 年 8 月。
最佳答案
我目前没有可用的代码。但看看使用 GDI 进行转换的速度非常快。
基本上捕获源帧,以正确的格式 (rgb24) 创建内存 dib 并 blit 到位图。转换发生在 blitting 期间,根据我的经验,转换速度非常快。
我用它从网络摄像头抓取帧,然后我可以将帧以所需的帧速率作为 jpeg 或位图放到硬盘上。
直流
关于c++ - 从 YUY2 到 RGB24 的快速转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2025104/