OpenCV 从 YUYV 像素格式视频帧创建 YUV420 或灰度 Mat 对象

Posted

技术标签:

【中文标题】OpenCV 从 YUYV 像素格式视频帧创建 YUV420 或灰度 Mat 对象【英文标题】:OpenCV create YUV420 or grayscale Mat object from YUYV pixelformat video frame 【发布时间】:2019-03-15 07:05:53 【问题描述】:

我正在尝试处理来自 Qt 应用程序的视频帧。 QML 相机的输入格式为 YUYV,默认情况下我无法将其设置为 YUV420 之类的其他格式。我需要捕获帧并创建一个 YUV420 或灰度格式的 Mat 对象。

我用以下代码尝试了 cvtColor,但它们在运行时都崩溃了 - COLOR_YUV2GRAY_YVY 颜色_YUV2RGB_YUYV COLOR_YUV2GRAY_YUYV

知道我该怎么做吗?

【问题讨论】:

你能显示运行时产生的错误吗?您使用的代码也将非常有用;) 【参考方案1】:

所以在玩弄了一些颜色转换代码之后,这就是我发现对我有用的解决方案。

cv::Mat img = cv::Mat(m_videoHeight, m_videoWidth, CV_8UC2, input->bits());
cv::Mat gray;
cv::cvtColor(img, gray, cv::COLOR_YUV2GRAY_YVYU);

这会将给定的 YUYV Mat 对象 - img 转换为灰度 Mat 对象 - 灰色。 input->bits() 指的是视频帧缓冲区的第一位。

【讨论】:

以上是关于OpenCV 从 YUYV 像素格式视频帧创建 YUV420 或灰度 Mat 对象的主要内容,如果未能解决你的问题,请参考以下文章

用于格式转换/简单转换的 FFMpeg 与 OpenCV

matlab与opencv读取同一帧视频时会得到不同的像素值

opencv读取ENVI标准格式

OpenCV从文本文件创建视频

从视频文件中收集 RGB 数据

使用opencv放大视频20x50像素的大小[重复]