Ubuntu14.04下OpenCV2.4.9+FFmpeg1.2.12安装配置及问题解决方案

22 篇文章 0 订阅
18 篇文章 1 订阅

在视频处理过程中用到时空兴趣点[1](Space-Time Interest Points,STIP)和改进的密集轨迹[2](Improved Dense Trajectories,IDT)这两种特征提取方法,两者都是应用十分普遍的算法。我们可以在作者主页上找到公开的算法源码,它们在Linux下需要OpenCV和FFmpeg的支持方可顺利运行。之前已经用过这两种工具,现在换了工作环境后想要再用,但是配置和安装过程中依旧出现不少问题。因此在搞定之后觉得很有必要将具体过程和遇到的问题及解决方案记录下来以备后用,也希望能够给其他人带来一点点帮助。


OpenCV2.4.9及FFmpeg1.2.12源码包下载

这两个软件在官网都可以直接找到各种版本的源码包,下载之后编译安装。如果不是特别需要最新版本的软件,个人建议采用那些已被多数人使用过的偏早期版本,出现问题时也能够较为方便地找到对应的解决方案。我选用的分别是OpenCV2.4.9和FFmpeg1.2.12这两个版本。

FFmpeg编译配置

FFmpeg是一个领先的多媒体框架,可以用来记录、转换数字音频、视频,并能将其转化为流的开源程序,它包括了目前领先的音/视频编码库libavcodec、libavutil、libavformat等[3]

1.卸载之前安装的FFmpeg和x264软件
为了防止出现版本问题等,建议先卸载之前(可能)安装的相关版本。命令如下:

sudo apt-get -qq remove ffmpeg x264 libx264-dev

2.安装依赖项及相关软件

sudo apt-get install yasm
sudo aptitude install libx264-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev  libxext-dev libxfixes-dev

3.编译安装
解压下载的FFmpeg包,进入解压的目录

cd ffmpeg-1.2.12

环境配置[4]

./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-pthreads --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab --enable-libvorbis --enable-nonfree --enable-pic --enable-shared

注意复制的过程中可能会有回车或字符问题,如果提示命令有问题,需要仔细检查空格及回车。上面使用prefix指定了软件的安装路径,则需要在配置文件中修改相应的路径,让系统能够找到FFmpeg的安装路径:

vi /etc/profile

按insert键,在该文件的末尾加上如下两行:

export FFMPEG_HOME=/usr/local/ffmpeg 
export PATH=$FFMPEG_HOME/bin:$PATH

按Esc键输入“:wq”即可退出并保存,再令上面的修改生效,命令如下:

source profile

一切配置完成后,准备安装,命令如下:

make
make install

安装之后在/usr/local/ffmpeg会看到有三个目录:bin 执行文件目录,lib 静态、动态链接库目录,include 编程用到的头文件。

4.检查安装配置是否正确
网上有说通过执行bin目录下的ffplay播放视频文件来测试是否安装成功。但是我编译安装之后并没有生成ffplay,bin目录下只有ffmpeg和ffserver。因此这里采用直接检查版本是否正确,之后使用时也没有出现问题。命令如下:

ffmpeg -version

此时出现正确的版本及配置信息,说明安装成功。

OpenCV编译安装

OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法[5]

1.安装依赖项

sudo apt-get -qq install libopencv-dev build-essential checkinstall cmake pkg-config libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libopencore-amrnb-dev libopencore-amrwb-dev x264 v4l-utils 

2.编译安装
解压下载的OpenCV包,进入解压的目录

cd opencv-2.4.9

创建编译目录,编译安装

mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install

这里编译时间较长,完成后会在最后一行打印如下提示信息:

-- Configuring done
-- Generating done
-- Build files have been written to: /opt/opencv-2.4.9

在编译过程中,可能会在Configuring done这一行停留时间很久,不要因为着急终止编译,需要耐心等待编译全部完成。安装过程中会出现“[10%]”百分比形式的进度提示,过程也会很慢,请耐心等待。

提示:cmake完成后会出现相关信息,其中可以查看是否已经支持FFmpeg,支持的话FFMPEG后将出现YES,下面还有一些编码及格式同为YES。

3.环境配置
所有的库文件默认安装在 /usr/local/lib 下, 所有的头文件安装在 /usr/local/include/opcv*/下面。修改环境配置[6],命令如下:

vim /etc/ld.so.conf

按insert键在文件最后一行加入

/usr/local/lib

按Esc键输入“:wq”即可退出并保存,再执行以下命令:

ldconfig

至此,OpenCV安装完成。

libcxcore.so.2无法找到问题解决方案

OpenCV安装完成后,测试IDT算法可以正常运行,但是执行STIP程序时出现如下错误:

./bin/stipdet: error while loading shared libraries: libcxcore.so.2: cannot open shared object file: No such file or directory

看问题意思是程序执行过程中无法找到共享库文件libcxcore.so.2,不存在这个文件或路径。从网上搜索结果来看,出现这个问题多数都是准备使用STIP来获取视频特征的,密集轨迹程序则并没有这个问题。stackoverflow网站上有这个问题以及几种解决的方案,可供参考[7]

创建软链接等方式在我这里没有成功,可能是当时没有设置正确,之后又没有root权限,最终采用了一种临时的办法。设置共享库搜索目录,命令如下:

export LD_LIBRARY_PATH=[enter your path]/opencv-2.4.9/release/lib

在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误,这比较常见。执行STIP出现这个问题的原因是尽管已经安装了该共享库,但是在准备调用的时候,程序无法找到该文件。

我的问题在于共享库文件安装到了其它“非/lib或/usr/lib”目录下,但是安装完成之后非root用户没有权限在“/etc/ld.so.conf”中加路径。因此export一个全局变量LD_LIBRARY_PATH,然后运行程序的时候就会去这个目录中找共享库[8]

执行STIP程序

在该目录下直接执行“./bin/stipdet –help”会无法执行,必须将stipdet和stipshow这两个文件变成可执行文件。为了方便我就直接将其改成完全公开可执行的权限[9]。命令如下:

chmod 777 bin/stipdet
chmod 777 bin/stipshow

对于密集轨迹的程序采用同样的方式,就可以正常执行了。此外,由于export的全局变量每次关闭命令窗口之后就不再生效。因此在执行STIP程序前必须先按照上述方法设置共享库搜索目录,就不会出现libcxcore.so.2无法找到的问题。

OpenCV版本查看

在使用过程中可能会需要查看安装的OpenCV版本,可以采用如下命令[10]

pkg-config --modversion opencv

pkg-config是编译应用程序和库文件的一个十分有用的工具,其功能之一就是检查库的版本号。

Python调用OpenCV模块

如果需要用Python来调用OpenCV模块,可以先安装Python再载入cv即可[4]。命令如下:

sudo apt-get install python-opencv
sudo apt-get install python-numpy
python
import cv


参考文献:
[1] https://www.di.ens.fr/~laptev/interestpoints.html
[2] https://lear.inrialpes.fr/people/wang/improved_trajectories
[3] https://ffmpeg.org/about.html
[4] http://blog.csdn.net/u010106759/article/details/51931815
[5] http://opencv.org/
[6] http://blog.csdn.net/firefoxbug/article/details/7554409
[7] http://stackoverflow.com/questions/5212728/libcxcore-so-2-missing-in-opencv
[8] http://blog.csdn.net/sahusoft/article/details/7388617
[9] http://blog.chinaunix.net/uid-21880738-id-1813031.html
[10] http://blog.csdn.net/ppp2006/article/details/47445903

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值