今天在 Ubuntu 下使用 OpenCV 来读取一个视频,碰到了下述问题:

  1. 自己手动安装的 OpenCV2.2.0 无法正确读取视频内容,用函数 cvCaptureFromAVI() 及 cvGetCaptureProperty() 均提示说失败: 所有的测试视频在 Windows 下用 OpenCV2.2.0 是可以正常读取的,应该是 ffmpeg 安装不完全或是不正确。

  2. 从源里安装 OpenCV2.1 后,可以打开视频读取数据,可是在读取视频帧内容的时候,却提示如下错误:

    [swscaler @ 0x94b3e80]No accelerated colorspace conversion found from yuv420p to bgr24.
    

这个问题应该是 OpenCV 在用 ffmpeg 解压 yuv420 数据时出错。

对于上述问题,可以采用下面的办法来解决:

  1. 重新安装 ffmpeg x264:Install and use the latest FFmpeg and x264
  2. 再重新安装 OpenCV,经测试,可以正确安装 OpenCV 2.3.1 版本,安装成功后,视频读写一切正常。

另外:如果是在 Ubuntu-Server 版下安装 OpenCV,在安装 libhighgui-dev 的时候,需要安装很多和桌面相关的依赖包。