2016-12-04 51 views
0

在尝试读取opencv中的.yuv视频文件时遇到特定问题。我的代码如下:在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

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

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

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

+0

感谢您清理这个!我会尽量找到解决办法 – user1816546