首页 > 解决方案 > OpenCV C++ 将 YUV420 转换为 RGB 问题

问题描述

我试图通过下面的代码片段将 YUV420 缓冲区写入 jpg 图像:

cv::Mat yuvImg;

yuvImg.create(dec.GetHeight() * 3 / 2, dec.GetWidth(), CV_8UC3);
memcpy(yuvImg.data, yuvBuf, dec.GetHeight() * 3 / 2 * dec.GetWidth() * sizeof(unsigned char));
cv::Mat rgbImg;
cv::cvtColor(yuvImg, rgbImg, CV_YUV2BGR_I420);

char img_path[100];
sprintf(img_path, "decoded_imgs/%d.jpg", frame_cnt++);
cv::imwrite(img_path, rgbImg);

但生成的图像显然不正确:

在此处输入图像描述

如果能提供任何建议,我将不胜感激!!

标签: opencv

解决方案


推荐阅读