正在读取未压缩的yuv视频文件的帧



我使用raspberry pi的相机以yuv格式录制了一段未压缩/未编码的视频。我想将每一帧读取为图像,并计算视频的总帧数

我找到了这个答案:如何在OpenCV中从YUV文件中读取帧?但它看起来很旧,似乎不起作用

我必须先将yuv视频转换为其他格式才能读取每一帧吗。我该怎么做
OpenCVMatlab或其他什么工具更适合这个?

我认为OpenCV可以从视频文件中读取YUV帧,因为底层媒体处理程序层(即FFmpeg)可以完成这项工作。

此外,OpenCV还支持通过cv::cvtColor()CV_YCrCb2RGBCV_RGBYCrCb在YUV和BGR之间进行转换。

以下代码适用于您的视频吗?

cv::VideoCapture cap("PATH_TO_YUV");
if (!cap.isOpened())
{
    std::cout << "Failed to open file: " << "PATH_TO_YUV" << std::endl;
    return -1;
}
cv::Mat frame;
while(true)
{
    cap >> frame;
    if (frame.empty())             
        break;
    cv::imshow("YUV frame", frame);
    cv::waitKey(1);
}

最新更新