apt-get install subversion
前不久安装好了OpenCV,昨晚测试一个avi视频处理的时候,cvCreateFileCapture总是返回NULL,我怀疑是ffmpeg没有配置好。今天就把OpenCV和ffmpeg都删除了,重新安装了下!最好把旧版本都删除了!
ffmpeg安装
源码下载 : svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
文件配置 : ./configure --enable-shared --enable-gpl --enable-swscale
安装 : make && make install
所有的库文件默认安装在/usr/local/lib 下, 所有的头文件安装在 /usr/local/include/lib*/下
测试 : ffplay a.avi
pkg-config安装
$ yum install pkg-config
pkg-config 通过各个库文件的.pc 文件识别已安装的库文件的信息,这些.pc文件是由各库的安装程序自己生成的,例如ffmpeg 安装程序会在 /usr/local/lib/pkgconfig 目录下提供 libavcodec.pc libswscale.pc 等5个.pc文件,分别对应安装的五个库文件。所以必须要让pkg-config能找到ffmpeg的*.pc文件,通过PKG_CONFIG_PATH 来设置pkg-config来更新。
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
cmake安装
$ yum install cmake
OpenCV安装
源码下载: http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.2/
$ cp OpenCV-2.4.0.tar.bz2 /usr/local/
$ tar -xvf OpenCV-2.4.0.tar.bz2
$ cd OpenCV-2.4.0
2.4.0的下面是以CMakeLists.txt形式
$ cmake CMakeLists.txt
这里可以查看是否已经支持ffmpeg,查看信息,FFMPEG已经是YES了
$ make && make install
所有的库文件默认安装在 /usr/local/lib 下, 所有的头文件安装在 /usr/local/include/opcv*/下面
$ vim /etc/ld.so.conf
最后一行加入 /usr/local/lib
$ ldconfig
或者
export LD_LIBRARY_PATH=/usr/local/lib
/////////////////////////
由于给原来RHEL分配的空间太少,故而重新装了下系统。安装ffmpeg时候遇到如下的问题:
libavcodec/x86/h264_qpel_mmx.c: Assembler messages:
libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp'
libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp'
libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp'
libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp'
libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp'
libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp'
libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp'
make: *** [libavcodec/x86/dsputil_mmx.o] Error 1
这是个让人抓狂的问题!!!找了许久,说是代码有个bug!!!
解决方法:http://permalink.gmane.org/gmane.comp.handhelds.openembedded/51954
需要把libavcodec/x86/h264_qpel_mmx.c中的"g"替换为“rm”即可解决!!!可以采用gedit使用批量替换。使用vim,进入命令行模式,输入:%s/"g"/"rm"/g即可全部替换。
Warning:
另外在装Opencv之前最好检查安装gtk库,因为ubuntu默认是没有安装的,最后编译出来的程序可能无法正常执行。
键入如下命令检查安装:
apt-get install build-essential cmake libgtk2.0-dev