最近做人臉識別項目的時候,發現在OpenCV3包中包含了人臉檢測算法所需的CascadeClassifier,但不含識別算法所需的FaceRecognizer。使用官網例程時,編譯器會提示缺少opencv2/contrib/contrib.hpp。 查詢資料后得知, 人臉識別等算法模塊由于不夠穩定,在OpenCV3版本中,被放在了OpenCV_Contrib包里,需要單獨下載并編譯。
sudo apt install cmake 順便一提,現在從github上下載大型項目速度極慢且容易失敗,建議使用墻內的coding.net導入github項目后下載。cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules <opencv_source_directory>其中opencv_contrib和opencv_source_directory分別為opencv_contrib和opencv源碼解壓后的文件夾如果不需要編譯所有的module,可以加上-DBUILD_opencv_* 參數,例如cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules -DBUILD_opencv_legacy=OFF <opencv_source_directory>。 此外,如果想加快編譯速度,可以跳過tests,參數為 -DBUILD_TESTS=OFF以只編譯人臉識別相關庫為例,配置參數為 cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules -DBUILD_opencv_aruco=OFF -DBUILD_opencv_bgsegm=OFF -DBUILD_opencv_bioinspired=OFF -DBUILD_opencv_ccalib=OFF -DBUILD_opencv_cnn_3dobj=OFF -DBUILD_opencv_contrib_world=OFF -DBUILD_opencv_cvv=OFF -DBUILD_opencv_datasets=OFF -DBUILD_opencv_dnn=OFF -DBUILD_opencv_dnns_easily_fooled=OFF -DBUILD_opencv_dnn_modern=OFF -DBUILD_opencv_dpm=OFF -DBUILD_opencv_freetype=OFF -DBUILD_opencv_fuzzy=OFF -DBUILD_opencv_hdf=OFF -DBUILD_opencv_line_descriptor=OFF -DBUILD_opencv_matlab=OFF -DBUILD_opencv_optflow=OFF -DBUILD_opencv_phase_unwrapping=OFF -DBUILD_opencv_plot=OFF -DBUILD_opencv_reg=OFF -DBUILD_opencv_rgbd=OFF -DBUILD_opencv_saliency=OFF -DBUILD_opencv_sfm=OFF -DBUILD_opencv_stereo=OFF -DBUILD_opencv_structured_light=OFF -DBUILD_opencv_surface_matching=OFF -DBUILD_opencv_text=OFF -DBUILD_opencv_tracking=OFF -DBUILD_opencv_xfeatures2d=OFF -DBUILD_opencv_ximgproc=OFF -DBUILD_opencv_xobjdetect=OFF -DBUILD_opencv_xphoto=OFF -DBUILD_TESTS=OFF <opencv_source_directory>回到新建的那個編譯文件夾,使用命令
make -j4“j”后面的數字最最好與處理器線程數相同。僅編譯face模塊的情況下,我的樹莓派3B耗時約25分鐘。
使用命令
make install可在輸出的結果中觀察lib文件、頭文件的安裝目錄。
新聞熱點
疑難解答