主机环境:
Ubuntu-12.04
编译器:
gcc 版本 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
交叉编译器:
gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67)
原料:
OpenCV-2.4.10(下载地址:http://opencv.org/downloads.html)
工具:
cmake-gui(用于配置Opencv)
若在系统中没有cmake程序,需要自己安装。在Ubuntu系统中可以使用下面的命令安装
# sudo apt-get install cmake
目标:
1. Linux主机可以使用的opencv库
2. arm-linux嵌入式系统可以使用的opencv库
一. 编译Linux主机中可以使用的Opencv库
1.启动cmake-gui 配置Opencv
# cmake-gui
选择好opencv的源文件目录和配置文件的目录点击Configure选择如下图
选择配置为unix makefiles project
下一步:选择编译使用的编译器
因为是在linux主机上使用,这里选择gcc和g++
点击Finish后如下:
这是默认的配置,我们可以根据自己的需要选择配置项。
我这里修改下面几项,其他的配置使用默认。
CMAKE_INSTALL_PREFIX 库的安装目录
修改完后,点击Configure, 然后再点击Generate
如果没有什么错误,就会顺利的执行到结束。
到此就算是配置完成了,接下来就是要编译了,如果在编译过程中出现什么错误,一般是由于缺少库而造成的。根据错误的提示安装所缺失的库或是重新配置去掉那个选项(前提是不影响我们后面的使用才可以去掉)。
2. 编译Opencv库
进入刚才设置的那个存放产生Makefile和cmake相关文件的目录。
# make && make install
开始编译:这个过程比较长,根据机器的配置不同时间会不同。我大概用了20分钟。
3. 测试
运行opencv源码中自带的人脸识别程序。
# cd opencv-2.4.10/samples/c
#./build_all.sh
#./facedetect--cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml"--scale=1.5 lena.jpg
二. 编译可以在arm-linux嵌入式系统上可以使用的库
在主机上编译opencv库相差不大。过程就不详细写了,只说一下最重要的部分就是编译器的选择。为目标机编译opencv库需要使用交叉编译器。
下图可以看到选择的交叉编译器的路径:
这里还要根据需要配置一下,因为是在在目标板上使用。
做如下修改:
去掉WITH_TIFF,WITH_CUDA
修改CMAKE_BUILD_TYPE 为 RELEASE
修改CMAKE_INSTALL_PREFIX,为arm-linux嵌入式系统库所在目录
修改完成后,再重新生产配置文件。
进入到配置文件的目录中执行:
# make && make install
编译完成后可以在CMAKE_INSTALL_PREFIX指定的目录中看到编译产生的库。下载到板子上就可以使用了。
(注:这是我在编译opencv库所记录下来的,如有错误请指正)