OpenCV2.0推出已经有很长时间了,但是OpenCV中文站在Linux系统下仍然挂着1.0的安装教程,最初按照OpenCV1.0的安装源码方法直接解压,配置,安装无奈错误不断。

#解压
tar zxvf opencv-2.0.0.tar.gz
cd opencv-2.0.0
#依赖性配置
./configure
#编译
make
make install


也Google过不少资料,包括这篇这篇(这位同学奇特之处在于其他博文貌似都是某种中东文字写的),不得不说Google在搜索这组关键词(OpenCV 2.0 Ubuntu)上效果相当不好,让我走了不少弯路。

不论使用两篇中的哪一篇,其出错信息基本都是一致

highgui/cvcap_ffmpeg.cpp:1213: warning: ‘AVFormatContext* av_alloc_format_context()’ is deprecated (declared at /usr/include/ffmpeg/avformat.h:873)

我也曾针对这个出错信息进行检索,结果令人失望,大量证据表明,这个错误信息虽然常见,但是所发求助贴都基本无回应,且基本散布在日语,俄语,阿拉伯文等各式蝌蚪文中,难道英语人群就没有人遇到这个错吗?最终我在OpenCV官网wiki上找到了答案。

这篇Installation Guide对安装过程给出了详细的阐释,纵观整个结构,就会发现OpenCV中文站上的VS 08平台搭建与之非常相似,事实上,从2.0开始,OpenCV就用跨平台的GUI make 工具cmake对OpenCV在各个平台下的编译给了给出了统一方法,在这里用GUI的cmake就相当于之前的configure对软件的编译进行依赖性分析,而后期的make 和 make install 都可以用IDE完成或者terminal里面直接完成。

对于我之前错误的修复,Willow Garag在wiki的一篇文章Ubuntu forum还专门开贴讨论这一问题,总体思路就是ffmpeg最新的一个稳定版build删掉了某个OpenCV里面要用到的函数,致使make不过;解决方案就是用nightly build的ffmpeg,这个build里面又重新包含了这个函数 :|

这次经历中,我看到了cmake的强大,一些简单的GUI交互就免去了用户大量的命令行指令,使得这个configure非常之光快速。

同样我也看到linux和win的不同之处,一个开源的系统必定蕴含的多种同样开源且频繁更新的视频I/O,多个发行版的并行,致使这个错误发生。