最近在网上找了很多教程,都没有成功。
今天不知怎的就成功了,当然是在经历了各种失败,显示各种错误以后。。。
http://blog.csdn.net/hwb506/archive/2011/04/13/6321490.aspx 这个教程写的比较简单,但是忽略了很多细节。
http://blog.csdn.net/huangmou37/archive/2011/02/25/6207800.aspx 再来一篇。
http://www.linuxidc.com/Linux/2011-05/36407.htm 再结合这篇,应该就差不多了。
主要是这个命令的问题:cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON ..
现在我来总结一下,虽然仍然没怎么搞懂...
1. 下载OpenCV 2.2源码包,地址http://www.opencv.org.cn/download/OpenCV-2.2.0.tar.bz2,其实可以通过apt-get install命令找到opencv相关包直接安装,但是建议从源码包MAKE,编译开始。
2. sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev
运行上述命令,安装软件。
3. 安装cmake. OpenCV官方论坛的安装教程,我看了下,貌似不适用于2.2版本了,2.2源码解压后得到文件夹OpenCV-2.2.0后,里面有个文件叫CMakeList.txt,这是cmake的"makefile",通过这个文件,cmake先把源码配置成常规安装包,生成gcc的make的Makefile文件。
好了,首先,在与源码包同级的目录下新建一个文件夹OpenCV-build,然后安装cmake。终端下sudo apt-get install cmake,然后sudo apt-get install cmake-qt-gui,两个安装成功后,终端输入cmake-gui,会打开一个界面:
点击Browse Source选择刚才解压的源码文件夹,再点击Browse Build选择刚才新建的OpenCV-build文件夹,点击configure按钮,这时Generate按钮应该已经可以点击了,不过Generate按钮还是灰色,再点一次configure按钮试试,应该就可以了,点击Generate按钮之后,可以看到下方有提示成功。
4.(Ubuntu11.04适用,10.10版本不需要这一步)修改OpenCV2.2源代码
在编译之前需要打一个补丁Ticket #862: OpenCV-2.2-nov4l1.patch,否则在编译时会报错而停在80%左右处,其实只是改了两个文件中的几行代码,修改如下:
OpenCV-2.2.0/modules/highgui/src/cap_v4l.cpp 217行处
#include
<linux/videodev.h>
|改成
#ifdef HAVE_CAMV4L
#include <linux/videodev.h>
#endif
OpenCV-2.2.0/modules/highgui/src/cap.cpp 174行处
#if defined(HAVE_CAMV4L) || defined (HAVE_CAMV4L2)
|改成
#if defined(HAVE_CAMV4L)
完成
5.打开终端, 转到OpenCV-build下,输入make,编译完后然后输入sudo make install。
6.接下来要给系统加入opencv库的环境变量(也就是库存放的路径,注意不是解压路径)
用vim打开/etc/ld.so.conf,注意要用sudo打开获得权限,不然无法修改,如:sudo vim /etc/ld.so.conf,在文件中加上一行 /usr/loacal/lib,/user/loacal就是makefile中指定的安装路径
再运行sudo ldconfig,
修改bash.bashrc文件,sudo gedit /etc/bash.bashrc
在文件末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
再打开一个新的控制台,然后重启或者注销。
7.终端下转到刚才解压的OpenCV-2.2.0/samples/c文件夹下,里面有一个build_all.sh脚本,执行之:bash ./build_all.sh,成功之后,ls命令查看,生成了一个facedetect执行文件,./facedetect执行之!如果弹出一个捕捉脸部的窗口,那么恭喜,你成功了。