在opencv中读取YUV文件

时间:2016-12-04 23:45:57

标签: visual-studio-2010 opencv ffmpeg

我在尝试在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;
}

但是,我一直遇到以下错误: enter image description here

我按照本网站的说明安装了FFMPEG:http://www.wikihow.com/Install-FFmpeg-on-Windows,安装似乎是正确的。有没有人对问题可能是什么有任何想法?

1 个答案:

答案 0 :(得分:1)

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

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

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