OpenCV从YUYV pixelformat视频帧创建YUV420或灰度Mat对象

时间:2019-03-15 07:05:54

标签: c++ qt opencv qml

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

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

你知道我该怎么做吗?

1 个答案:

答案 0 :(得分:0)

所以在尝试了颜色转换代码后,这是我发现对我有用的解决方案。

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()指视频帧缓冲区的第一位。