converting a UYVY FFmpeg

converting a UYVY FFmpeg

本文关键字:FFmpeg UYVY converting      更新时间:2023-10-16

我想阅读并显示一个使用opencv的视频。我用Direct show录制过,视频有UYVY(4:2:2)编解码器,因为opencv无法读取该格式,我想将编解码器转换为RGB颜色模型,我读过关于ffmpeg的文章,我想知道是否可以用它完成这项工作?如果没有,如果你给我一个建议,我将不胜感激。

正如我之前向您解释的,OpenCV可以读取一些YUV格式,包括UYVY(感谢FFmpeg/GStreamer)。所以我相信你从相机中得到的cv::Mat已经转换为BGR颜色空间,这是OpenCV默认使用的。

我修改了以前的程序,将视频的第一帧存储为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频道将被切换。