opencv - 在 OPENCV 中加载 RAW YUV 视频

标签 opencv yuv

我在 OpenCV 中加载 RAW YUB 视频时遇到问题。我可以使用以下命令在 mplayer 中播放它:

mplayer myvideo.raw -rawvideo w=1280:h=1024:fps=30:y8 -demuxer rawvideo

我在 OpenCV 中加载的代码是:

CvCapture* capture=cvCaptureFromFile("C:\\myvideo.raw");

cvCaptureFromFile 总是返回 NULL。但是如果我尝试使用普通的 avi 文件,代码会正常运行(捕获不为空)。

我在 Windows 7 下使用最新版本的 OpenCV。

编辑:输出信息是

[IMGUTILS @ 0036f724] Picture size 0x0 is invalid  
[image2 @ 009f3300] Could not find codec parameters (Video: rawvideo, yuv420p)

谢谢

最佳答案

OpenCV 使用 ffmpeg 作为后端,但是,它只包含 ffmpeg 函数的一个子集。您可以尝试安装一些编解码器。 (前段时间K-lite帮了我)

但是,如果您的目标是在 OpenCV 中获取原始 YUV,答案是“不可能”。

OpenCV 被硬编码为将每种输入格式转换为 BGR,因此即使您能够打开原始输入,它也会在传递之前自动将其转换为 BGR。没有机会解决这个问题,唯一的办法是使用不同的捕获库或破解 OpenCV。

你可以做的(模拟 YUV 输入)是捕获 avi,转换为 YUV

cvtColor(...,CV_BGR2YCBCR /* or CV_BGR2YUV */ );

然后处理

关于opencv - 在 OPENCV 中加载 RAW YUV 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8164822/

相关文章:

ios - 使用 AVCaptureSession 捕获视频,使用 EAGLContext 没有可见输出

python - 如何在 opencv 的 bitwise_operation 中应用掩码?

android - 将 C++ OpenCV 链接到 Android Studio 中的应用程序

ios - 如何按位置对矩形数组进行排序?

ffmpeg - 用FFmpeg将解码的YUV420P数据写入文件?

android - 如何从 OMXCodec 解码输出中转储 YUV

ios - 在 Unity 项目中使用 OpenGL ES 在 iOS 上进行纹理渲染

opencv - 使用 gstreamer 将 YUVj420p 像素格式转换为 RGB888

java - OpenCV 错误 : Bad argument (The array of layer neuron counters must be an integer vector)

java - OpenCV java 无法打开网络摄像头