Fedora17下安装OpenCV2.3.1[转]

将要使用的版本opencv版本:2.3.1a
计算机环境:Fedora 14, Gcc 4.5.1, cmake 2.8.4。为了显示界面,貌似还需要gtk2-devel。如果需要进行视频处理,还需要安装ffmpeg-devel。否则基本无法读取视频。如果要 处理图片,还需要安装相应的库:openjpeg-devel和libpng-devel。
默认情况下,fedora并没有安装这些库,所以需要先安装它们。

1
2
$ su
# yum install cmake gtk2-devel ffmpeg-devel openjpeg-devel libpng-devel -y

在安装完前置条件之后,现在开始安装opencv(下载地址).
下载完之后进行解压,并假设解压路径为OPENCV_ROOT。在$OPENCV_ROOT里创建release文件夹,用于存放编译后的文件。

1
2
3
$ tar xvf OpenCV-2.3.1a. tar .bz2
$ cd OpenCV-2.3.1a
$ mkdir release

接着可以在release文件夹里创建Makefile

1
2
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX= /usr/local -D BUILD_PYTHON_SUPPORT=ON ..

其中选项BUILD_PYTHON_SUPPORT=ON表示添加Python支持。而每个选项前要添加-D参数。opencv还可以添加CUDA 和TBB支持。想要在编译中添加相应的支持。只需添加编译选项 -D WITH_CUDA=ON或 -D WITH_TBB=ON。
默认情况下,只要安装了CUDA 4.0版本,opencv就会自动添加CUDA支持。但出于种种原因而不想添加CUDA支持,只需添加编译选项 -D WITH_CUDA=OFF即可。
生成Makefile之后就可以开始编译。

1
2
3
$ make -j4
$ su
# make install

其中make -j4表示启用4个核进行编译。如果你的计算机是双核的,则应该使用-j2.
安装完之后,需要设置库路径

1
2
$ su
# vi /etc/ld.so.conf.d/opencv.conf

输入/usr/local/lib,并保存退出。或者可以在/etc/profile中添加环境变量

1
2
LD_LIBRARY_PATH=$LD_LIBRARY_PATH: /usr/local/lib
export LD_LIBRARY_PATH

添加完库路径之后,还需要添加环境变量

1
2
PKG_CONFIG_PATH= /usr/local/lib/pkgconfig :$PKG_CONFIG_PATH
export PKG_CONFIG_PATH

然后更新库缓存和环境变量

1
2
# ldconfig
$ source /etc/profile

测试安装是否成功

1
2
$ cd $OPENCV_ROOT /samples/c
$ sh build_all.sh

编译好之后直接试运行

1
$ . /facedetect --cascade= "/usr/local/share/$OPENCV/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg

其中$OPENCV表示解压缩后的文件夹名字,默认为OpenCV-2.3.1a.
若安装成功,应该会看到输出一副人脸检测的图片。
注意:
在实际编程中,如果需要用到opencv的头文件,比如说cv.h,则应该写为

1
#include <opencv/cv.h>

你可以在/usr/local/include文件夹中发现有opencv和opencv2这两个文件夹。而Linux下头文件搜索路径只包含一级 目录。所以需要手动加上文件夹名字opencv/cv.h,否则编译时会提示没有找到cv.h文件。如果不想每次都加opencv/,则可以将 opencv/中的所有文件链接到/usr/local/include中。

1
# ln -s /usr/local/include/opencv/* /usr/local/include/

或者在编译选项中显示说明

1
$ gcc XXX.cpp `pkg-config --cflags opencv` -o XXX

同样,动态链接库也会遇到找不到的问题。比如会出现
/usr/local/include/opencv2/core/mat.hpp:297: undefined reference to `cv::fastFree(void*)’
这样的字眼。这个时候需要把动态链接库的路径加到编译选项中。

1
$ g++ `pkg-config --cflags --libs opencv` XXX.c -o XXX

参考资料
[1] http://www.opencv.org.cn/forum/viewtopic.php?t=14610
[2] http://opencv.willowgarage.com/wiki/InstallGuide_Linux

你可能感兴趣的:(Fedora17下安装OpenCV2.3.1[转])