转换UYVY FFmpeg

时间:2013-02-13 13:15:00

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

我想阅读并使用opencv显示视频。我用Direct-show录制,视频有UYVY(4:2:2)编解码器,因为opencv无法读取该格式,我想将编解码器转换为RGB颜色模型,我想知道ffmpeg我想要要知道是否有可能完成这项工作?若不是,如果你有任何建议,我会感激不尽。

1 个答案:

答案 0 :(得分:1)

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

我修改了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通道。