将要使用的版本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