【问题标题】:converting a UYVY FFmpeg转换 UYVY FFmpeg
【发布时间】:2013-01-29 01:15:59
【问题描述】:

我想使用 opencv 阅读和播放视频。我用 Direct-show 录制,视频有 UYVY (4:2:2) 编解码器,由于 opencv 无法读取该格式,我想将编解码器转换为 RGB 颜色模型,我阅读了有关 ffmpeg 的信息,我想要知道是否有可能完成这项工作?如果没有,如果您有建议,我将不胜感激。

【问题讨论】:

  • UYVY 是 [流行] 像素格式之一。您绝对可以使用 DirectShow API 从该文件中读取所有标准方法。 Windows 内置了转换为 RGB 的功能。很难说为什么你不能使用你创建的文件。
  • 我知道阅读但我不知道如何转换它`
  • 我从来没有听说过RBB,它是什么?

标签: c++ opencv ffmpeg directshow video-processing


【解决方案1】:

作为I explained to you before,OpenCV 可以读取某些格式的 YUV,包括 UYVY(感谢 FFmpeg/GStreamer)。所以我相信你从相机得到的cv::Mat 已经转换为 OpenCV 默认使用的 BGR 颜色空间。

我修改了我的 previous program 以将视频的第一帧存储为 PNG:

cv::Mat frame;
if (!cap.read(frame)) 
{
    return -1;
}            

cv::imwrite("mat.png", frame);

for(;;)
{
 // ...

而且图像很完美。在 mat.png 上执行命令 file 显示:

mat.png: PNG image data, 1920 x 1080, 8-bit/color RGB, non-interlaced

更准确的测试是将整个frame.data() 转储到磁盘并使用图像编辑器打开它。如果您这样做,请记住 R 和 B 通道将被切换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-04
    • 2014-07-12
    • 2015-10-15
    • 2010-11-08
    • 2017-09-22
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    相关资源
    最近更新 更多