如何将NV12转换为BGR(AVFrame转换为cv :: Mat)

时间:2019-01-01 10:30:31

标签: opencv ffmpeg mat yuv

我使用IP摄像机的FFMPEG库对视频帧进行了解码。 该视频帧格式为AV_PIX_FMT_NV12。 AV_PIX_FMT_NV12在FFMPEG库中定义。 我想将NV12转换为BGR(将AVFrame转换为cv :: Mat),所以我尝试这样做 但我看错了图片:

enter image description here

请帮助我。我想正确转换。谁能猜到这个问题? 请参考以下代码:

void CALLBACK MyCallbackFunc(AVFrame *avFrame )
{
    if (avFrame != NULL)
    {
        cv::Mat imageRGB;
        cv::Mat picI420 = cv::Mat(avFrame->height * 3 / 2, avFrame->width, CV_8UC1, avFrame->data[0]);
        cv::cvtColor(picI420, imageRGB, CV_YUV2BGR_NV12);
        imshow("imageRGB", imageRGB);

        cvWaitKey(1);
    }
}

对不起,我英语不好。如果您想了解更多信息,请在下面评论。

0 个答案:

没有答案