0

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

4

1 回答 1

1

正如我之前向您解释的那样,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(;;)
{
 // ...

并且图像是完美的。filemat.png上执行命令显示:

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

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

于 2013-02-13T21:38:10.977 回答