在上一篇《计算机视觉:opencv初探》中,波波简单总结了计算机视觉的市场情况及应用领域。那么从本篇开始波波将教大家一步一步学会做一个人脸识别。在人脸识别的系列笔记中波波采用的都是opencv这个开源库,所以本篇先从opencv的安装配置开始。默认情况下操作系统采用Centos,个别情况下也可能会采用Ubantu或debian。所以如果你的电脑采用Windows服务器,请从第一篇开始就不要看了,以免浪费时间。
Opencv安装配置:
1、安装依赖环境:
Centos执行如下命令:
- yum install cmake gcc gcc-c++ gtk+-devel gimp-devel gimp-devel-tools gimp-help-browser zlib-devel libtiff-devel libjpeg-devel libpng-devel gstreamer-devel libavc1394-devel libraw1394-devel libdc1394-devel jasper-devel jasper-utils swig python libtool nasm
Ubantu或Debian执行如下命令:
- $ sudo apt-get install gcc-4.8 g++-4.8 //版本高于这个版本均可
- $ sudo apt-get install build-essential
- $ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
- $ sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
这一步非常重要,直接关系到后面安装是否成功。解决了依赖关系后我们就开始正式安装了。
2、下载opencv的人脸识别模块(如果你做的项目跟人脸识别无关可以不用安装这一模块)。
- //下载最新版本3.4.1
- cd /
- wget https://github.com/opencv/opencv_contrib/archive/3.4.1.zip
- unzip 3.4.1.zip
在本篇笔记中最新版本是3.4.1,后期可能会有新的版本出来,GIT地址:https://github.com/opencv/opencv_contrib.git,大家也可以通过git clone的方式下载,也可以下载tar.gz源码包。道理都是相通的,所以这里波波就不挨个写操作代码了。
3、下载opencv并编译安装:
一行一行的执行如下指令。
- mkdir -p /opencv
- cd opencv
- wget https://github.com/opencv/opencv/archive/3.4.1.zip
- unzip 3.4.1
- //上一步解压出的目录名字是opencv_contrib-3.4.1,将上一步人脸识别模块目录cp到/opencv并将目录名字改名“opencv_contrib”
- cd /opencv/opencv-3.4.1
- mkdir -p build
- cd build
- cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ..
- make -j6 && make install
- echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf
- ldconfig
在这一步需要注意的是,如果你的操作系统内包含QT的开发环境,那么上述指令没有任何问题。如果操作系统不包含则需要找到cmake那一行,将“-D WITH_QT=ON”删掉(如果你不知道的情况下执行了上述cmake那一句报了错,那么需要删除build目录,重新执行cmake就行。)。同样上述指令中没有包含JAVA支持,如需开启JAVA支持也许添加对应的编译参数。因为接下来的开发波波主要用的语言有C++,Python和PHP所以这里没有支持JAVA。
上述过程中有两处地方可能需要联网下载东西,会出现你认为是死机的现象(一个是ippicv,另一个是face_landmark),其实不是。如果取消的话按Ctrl+C即可。
这一步执行完,opencv就安装完了,大家可以进行相关项目开发了,但是如果你想让WEB同样具备这样的功能则需要安装相关扩展,不过装不装影响不大,如果你会PHP的话,也可以用Php、C++、Python、Java进行混合开发。这些都是通的。
用下面指令检查opencv是否安装成功:
- $ pkg-config --libs opencv
如需继续安装WEB扩展,那么下面的步骤可能会帮到你。
4、安装PHP扩展。
安装指令如下(这个扩展要求opencv版本>=3.3.0,如果之前按照我的笔记安装的话,下面很顺利,否则你就要考虑opencv升级的问题了。):
- $ git clone https://github.com/hihozhou/php-opencv.git
- $ cd php-opencv
- $ phpize
- $ ./configure --with-php-config=/your/php-config --enable-debug
- $ make && make install
开启扩展,找到php.ini添加如下一行配置即可。
- extension="opencv.so path"
重启PHP,在PHP程序中我们就可以直接调用了,具体调用方法波波在后期是有具体讲的。到这里服务器的opencv全部安装配置完毕,适合树莓派最新3B+。
下篇文章波波将带大家完成简单的人脸识别,敬请期待。
2018年5月28日,我重新编辑了这篇笔记,因为在重复安装过程中出现了部分问题,并给予了解决。虽然有点啰嗦,但希望这篇笔记能够比较详尽的记录整个安装的过程,避免踩坑。
相关错误:
1、Opencv多版本共存导致过低的问题。
因为在上述实例中波波带领大家安装的是截止本篇文章的最新版本3.4.1,但是安装后运行“pkg-config --modversion opencv”发现opencv的版本为“2.4.4”,直接后果就是导致下面的PHP扩展无法正常安装成功。经过检查发现CentOS中已经安装了一个版本2.4.4,位于/usr/local/lib下面。所以更新动态链接库指向的还是这个版本。
解决方法:
- export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig/ 这个路径根据大家自己情况进行适当修改。
- sh -c 'echo "/usr/local/lib64" > /etc/ld.so.conf.d/opencv.conf'
- ldconfig