在 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 是有能力的。
请务必为您的特定文件提供正确的详细信息 - 正确的尺寸和像素格式至关重要。
我在尝试在 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 是有能力的。
请务必为您的特定文件提供正确的详细信息 - 正确的尺寸和像素格式至关重要。