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

标签 c++ qt opencv qml

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

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

知道我该怎么做吗?

最佳答案

所以在尝试了一些颜色转换代码之后,我发现这是适合我的解决方案。

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 对象 - gray。 input->bits() 指的是视频帧缓冲区的第一位。

关于c++ - OpenCV 从 YUYV 像素格式视频帧创建 YUV420 或灰度 Mat 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55177286/

相关文章:

python - 使用 VTK Python API,将多个标量添加到非结构化网格单元

c++ - 使用 QSortFilterProxyModel 对 Qml ListView 的数据进行排序。

visual-c++ - 未处理的异常,使用Visual c++的opencv cvCaptureFromCAM中的访问冲突

python - 如何将opencv人脸检测边界框坐标转换为dlib人脸检测边界框坐标?

C++:type_info 区分类型

c++ - 使用浮点/双除法比较可还原分数

c# - 如何找到无法加载 "A procedure imported by ' xxx.dll 的源。”异常?

c++ - Qt 插槽是否与其他代码并行运行?

c++ - 追加和迭代 QList

image - 在openCV中寻找轮廓和凸包的问题