最近人臉識別的技術比較火。因爲工做的須要,最近一段時間也在瞭解人臉識別方面的知識。git
先介紹一下Face++,國內的Face++是人臉識別比較優秀的實例,有在線API和離線SDK提供,使用方式也比較簡單,不過人臉庫創建在Face++的服務器中,我的版免費,企業級收費。github
基於數據信息的保密和二次開發的須要,我選擇了使用OpenCV用做人臉識別開發,OpenCV是由C(C++)編寫的開源的計算機視覺庫。提供C++接口用於調用人臉識別、人臉驗證等方法。因爲配置比較複雜,官方說明不詳盡,開發花了較多的時間,因此寫下了這篇文章,一方面提供你們學習參考,一方面爲本身總結整理。算法
開發的環境爲Win七、VS201五、OpenCV3.1(64位)。服務器
OpenCV:ide
其中OpenCV 2.x和OpenCV 3.x版本有一個比較大的區別,OpenCV 3.x將人臉識別的部分功能(contrib)提取了出來。因此不建議在官網(http://opencv.org/)上直接下載opencv的exe執行文件來使用。須要正常使用人臉識別,除了下載opencv以外,還要下載opencv_contrib包。能夠經過OpenCV的github網站(https://github.com/Itseez)來下載。學習
下載完opencv和opencv_contrib包後分別解壓縮。再經過Cmake軟件來對opencv進行搭建sln項目,搭建過程當中的指定路徑指向opencv_contrib(即下圖步驟3)。編譯經過以後就會生成一個包含人臉識別功能的完成的OpenCV 3.1項目。而後在VS2015中新建該sln解決方案,編譯後就可使用了。網站
如下是CMake創建OpenCV 3.1項目的過程,1爲opencv的路徑,2爲創建項目後生成的路徑,填寫路徑後點擊Configure,能夠獲得紅色背景部分的內容,3爲在OPENCV_EXTRA_MODULRS_PATH下填寫opencv_contrib的modules目錄路徑,而後點擊Generate便可生成解決方案。ui
在VS2015中打開OpenCV3.1的.sln解決方案,在Debug模式下先從新生成解決方案,而後找到CMakeTargets中的install而後右鍵選擇「Project Only」-->「Build Only INSTALL」。3d
這個時候OpenCV3.1解決方案基本就完成不須要改動了,除非你要改原有的算法和實現。(這裏的OpenCV 3.1項目是獨立的,須要新建一個解決方案來調用它)code
如今就能夠開始新建本身的解決方案了,而後在本身的解決方案中,右鍵點擊「屬性」,配置相關屬性就能夠調用到OpenCV3.1的功能了。
Include Directories:
C:\opencv3.1\install\include\opencv;C:\opencv3.1\install\include\opencv2;C:\opencv3.1\install\include;
Library Directories: C:\opencv3.1\install\x64\vc14\bin;C:\opencv3.1\install\x64\vc14\lib;C:\opencv3.1\install\x64\vc14\staticlib;
Additional Dependencies: opencv_aruco310d.lib;opencv_bgsegm310d.lib;opencv_bioinspired310d.lib;opencv_calib3d310d.lib;opencv_ccalib310d.lib;opencv_core310d.lib;opencv_datasets310d.lib;opencv_dnn310d.lib;opencv_dpm310d.lib;opencv_face310d.lib;opencv_features2d310d.lib;opencv_flann310d.lib;opencv_fuzzy310d.lib;opencv_highgui310d.lib;opencv_imgcodecs310d.lib;opencv_imgproc310d.lib;opencv_line_descriptor310d.lib;opencv_ml310d.lib;opencv_objdetect310d.lib;opencv_optflow310d.lib;opencv_photo310d.lib;opencv_plot310d.lib;opencv_reg310d.lib;opencv_rgbd310d.lib;opencv_saliency310d.lib;opencv_shape310d.lib;opencv_stereo310d.lib;opencv_stitching310d.lib;opencv_structured_light310d.lib;opencv_superres310d.lib;opencv_surface_matching310d.lib;opencv_text310d.lib;opencv_tracking310d.lib;opencv_ts310d.lib;opencv_video310d.lib;opencv_videoio310d.lib;opencv_videostab310d.lib;opencv_xfeatures2d310d.lib;opencv_ximgproc310d.lib;opencv_xobjdetect310d.lib;opencv_xphoto310d.lib;ippicvmt.lib;
注意:
一、OpenCV 2.x版本人臉識別須要導入的包爲:#include "opencv2/contrib/contrib.hpp",在OpenCV3.1版本中不存在該包,應該導入包:#include "opencv2/face.hpp"
二、C:/opencv3.1爲我生成的解決方案目錄,其中opencv3.1版本對應爲vc14,opencv3.0版本爲vc12
三、生成解決方案和配置相關屬性時,要注意有Debug和Release兩種模式,建議兩種都編譯配置一次
暫時就寫這麼多,還有一些實際調用了例子,等有空整理以後再分享,有問題的話能夠交流。