c++ - 从 YUY2 到 RGB24 的快速转换

标签 c++ webcam data-conversion

我正在编写一个程序,它会实时对来自网络摄像头的图像进行一些转换。与几乎所有其他网络摄像头一样,我的 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/

相关文章:

c++ - 为什么我不能写container.iterator?

c++ - 按值传递,常量值,引用,常量引用,指针,常量指针

c++ - cvSetImageData 和 cvCreateImage c++ 等效接口(interface)

c++ - 通过宏定义一个 Enum/Struct 需要什么?

flash - 网页上的实时流媒体网络摄像头(最有效的解决方案)

python - OpenCV 网络摄像头问题

python - ffmpeg 无法从 python subprocess.Popen 在 windows 中访问 USB 网络摄像头

c# - 将 vector<unsigned char> {1,2,3} 转换为字符串 "1-2-3"AS DIGITS

r - 转换为 xts 不起作用,因为数据类型为 'character' 且无法转换为 'numeric'

c++ - 使用 CppUnit 参数化测试