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