在 opencv 中读取 YUV 文件

Reading YUV file in opencv

我在尝试在 opencv 中读取 .yuv 视频文件时遇到了一个特殊问题。我的代码如下:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main( void )
{

    VideoCapture cap("video/balloons1.yuv"); // open the video file for reading

    if ( !cap.isOpened() ) // if not success, exit program
    {
        cout << "Cannot open the video file" << endl;
        return -1;
    }

return 0;
}

但是,我一直遇到以下错误:

我已经按照本网站的说明安装了 FFMPEG:http://www.wikihow.com/Install-FFmpeg-on-Windows 并且安装似乎是正确的。有没有人知道问题可能是什么?

原始 YUV 视频文件不包含任何元数据,例如图片尺寸、时间、使用的像素格式,甚至不包含任何用于将文件标识为视频文件的标记。没有额外的帮助,没有玩家可以打开这个文件,OpenCV 和 ffmpeg 也不能。您需要以某种方式告诉 OpenCV 文件的参数(不确定 OpenCV api 是否可行)或将文件转换为其他格式。

我建议做后者。 Using FFMPEG to losslessly convert YUV to another format for editing in Adobe Premier 中描述的可能是最简单的方法(这将无损压缩视频文件),或者您可以尝试使用某种能够存储原始视频的格式 - IIRC mxf 是有能力的。

请务必为您的特定文件提供正确的详细信息 - 正确的尺寸和像素格式至关重要。