最近做人脸识别项目的时候,发现在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文件、头文件的安装目录。
新闻热点
疑难解答