在Linux下编译OpenCV_Contrib

在Linux下编译OpenCV_Contrib

最近做人脸识别项目的时候,发现在OpenCV3包中包含了人脸检测算法所需的CascadeClassifier,但不含识别算法所需的FaceRecognizer。使用官网例程时,编译器会提示缺少opencv2/contrib/contrib.hpp。
查询资料后得知, 人脸识别等算法模块由于不够稳定,在OpenCV3版本中,被放在了OpenCV_Contrib包里,需要单独下载并编译。

1.下载所需工具

  1. 下载opencv_contrib源码:https://github.com/Itseez/opencv_contrib
  2. 下载opencv源码:https://sourceforge.net/projects/opencvlibrary
  3. 下载安装cmake:sudo apt install cmake
    顺便一提,现在从github上下载大型项目速度极慢且容易失败,建议使用墙内的coding.net导入github项目后下载。

2.配置

  1. 新建一个文件夹作为编译目录,切换到这个目录
  2. 配置cmake,语法为cmake -DOPENCV_EXTRA_MODULES_PATH=/modules
  3. 其中opencv_contribopencv_source_directory分别为opencv_contrib和opencv源码解压后的文件夹
  4. 如果不需要编译所有的module,可以加上-DBUILD_opencv_* 参数,例如cmake -DOPENCV_EXTRA_MODULES_PATH=/modules -DBUILD_opencv_legacy=OFF 。 此外,如果想加快编译速度,可以跳过tests,参数为 -DBUILD_TESTS=OFF
  5. 以只编译人脸识别相关库为例,配置参数为
    cmake -DOPENCV_EXTRA_MODULES_PATH=/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

3.编译

回到新建的那个编译文件夹,使用命令

make -j4

“j”后面的数字最最好与处理器线程数相同。仅编译face模块的情况下,我的树莓派3B耗时约25分钟。

4.安装

使用命令

make install

可在输出的结果中观察lib文件、头文件的安装目录。

你可能感兴趣的:(嵌入式,C++,opencv)