opencv3.4.16 windows 配置contrib库 教程

发布时间:2024-07-18 00:24:32 作者:yexindonglai@163.com 阅读(607)

前言

仅仅安装了OpenCV想学习人脸识别的时候就会出现些错误,在这里简单介绍一下:

使用最新版的OpenCV进行人脸识别会发现没有face.hpp这个文件,而有一些网上的讲解视频当使用==#include<opencv2/face.hpp>==时,我们却没有,因为最近实现人脸识别,由于采用的是opencv3,而opencv3的人脸识别库等contrib模块已经不再内置了。这也正是人脸识别等contrib模块没有放到主仓库的原因:不稳定,仍在开发中。。。

OpenCV在视觉算法中的功能非常强大,其中一个原因就是该算法库一直在与时俱进的更新最新的算法,对于具有专利的算法(如SURF)以及一些还没有稳定的算法,OpenCV会将其置于扩展模块中,这些扩展模块包含在opencv_contrib代码库中。对于稳定的算法,会被移到OpenCV主仓库代码中,因此读者需要谨慎的使用opencv_contrib,因为不同版本的函数可能存在差异。
在OpenCV 3.x版本之后,opencv_contrib就不再包含于OpenCV源码中,opencv_contrib的源码可以在Github上下载,然后参与OpenCV源码编译。

OpenCV_Contrib的模块及其功能如下:

  1. alphamat:Alpha Matting信息流算法;
  2. aruco:增强现实标记算法;
  3. barcode:条形码检测与解码方法;
  4. bgsegm:增强背景-前景分割算法;
  5. bioinspired:仿生学视觉模型和衍生工具;
  6. ccalib:用于三维重建的自定义校准模式;
  7. cudaarithm:CUDA矩阵运算;
  8. cudabgsegm:CUDA背景分割;
  9. cudacodec:CUDA视频编解码;
  10. cudafeatures2d:CUDA特征检测与描述;
  11. cudafilters:CUDA图像滤波;
  12. cudaimgproc:CUDA图像处理;
  13. cudalegacy:CUDA传统支持;
  14. cudaobjdetect:CUDA目标检测;
  15. cudaoptflow:CUDA光流算法;
  16. cudastereo:CUDA立体匹配;
  17. cudawarping:CUDA图像扭曲;
  18. cudev:CUDA设备层;
  19. cvv:计算机视觉程序交互式可视化调试的GUI;
  20. datasets:用于处理不同数据集的框架;
  21. dnn_objdetect:基于DNN的目标检测;
  22. dnn_superres:基于DNN的超分;
  23. dpm:基于可变形零件的模型;
  24. face:人脸分析;
  25. freetype:使用freetype/harfbuzz绘制UTF-8字符串;
  26. fuzzy:基于模糊数学的图像处理;
  27. hdf:分层数据格式I/O例程;
  28. hfs:基于层次特征选择的图像分割方法;
  29. img_hash:该模块提供了不同的图像哈希算法的实现;
  30. intensity_transform:该模块提供了用于调整图像对比度的强度变换算法的实现;
  31. julia:OpenCV Julia绑定;
  32. line_descriptor:用于从图像中提取线条的二进制描述符;
  33. mcc:Macbeth图表模块;
  34. optflow:光流算法;
  35. ovis:OGRE三维可视化器;
  36. phase_unwrapping:相位展开API;
  37. plot:Mat数据绘制函数;
  38. quality:图像质量分析API;
  39. rapid:基于轮廓的三维目标跟踪;
  40. reg:图像配准;
  41. rgbd:RGB深度处理;
  42. saliency:显著性API;
  43. sfm:运动结构分析;
  44. shape:形状距离与匹配;
  45. stereo:立体匹配算法;
  46. structured_light:结构光API;
  47. superres:超分模块;
  48. surface_matching:曲面匹配;
  49. text:场景文字检测与识别;
  50. tracking:追踪API;
  51. videostab:视频稳定;
  52. viz:三维可视化器;
  53. wechat_qrcode:微信二维码检测器,用于检测和解析二维码;
  54. xfeatures2d:features2d扩展模块;
  55. ximgproc:imgproc扩展模块;
  56. xobjdetect:objdetect扩展模块;
  57. xphoto:photo扩展模块

1、准备

从opencv3开始,将 face、sift、surf 等函数相关的库单独拎出来了,若要使用需配置contrib包。本文介绍了如何在 windows 中配置contrib+opencv。所用版本为opencv3.4.16 + contrib3.4.16,操作系统为win10,win11均测试过可行。

配置 contri b前我已完整配置过opencv,如果已配置过 opencv,在设置路径相关参数时,需要注意调整一下;

1 下载
从最大的同性交友网站上下载opencv和opencv_contrib。均为官方发布的。opencv和opencv_contrib的版本一定要一一致

2、存放路径
将 opencv下载解压后放在 D:\cpp\opencv-3.4.16 目录
将 opencv_contrib 下载解压后放在 D:\cpp\opencv-3.4.16 目录

2、Configure

打开 CMake-gui ,选择好 opencv 的目录;先点一下 Configure

然后会多出来很多选项,找到 OPENCV_EXTRA_MODULES_PATH,将其设为以下值,就是 contrib 的路径;

  1. D:/cpp/opencv_contrib-3.4.16/modules

设置好路径之后,再点一下 Configure; 此时会重新生成

等他 done 之后又是一片红,再点一次configure,变成白色就完了

3、Generate

点击 Generate 按钮,此时会生成 makefile

4、编译

进入 D:/cpp/opencv-3.4.16/sources/build 目录,打开cmd窗口,输入以下命令进行编译,等他走到 100% 就完成了,比较费时间,耐心等待。。。

  1. # 正常情况下啊windows的编译是这个命令,但是我的修改过,改为了 mingw32-make-posix
  2. mingw32-make
  3. # 如果觉得太慢啊可以使用 -j 参数,使用多线程编译,加快速度,但是有可能会卡住;不过也不是问题,退出重新编译就行;
  4. mingw32-make -j8

5、安装

输入以下命令进行安装,会将头文件复制到指定目录

  1. # 正常情况下啊windows的编译是这个命令,但是我的修改过,改为了 mingw32-make-posix
  2. mingw32-make install

安装完成后在 D:\cpp\opencv-3.4.16\sources\build\install\include\opencv2 目录就可以看到 opencv_contrib 中的头文件了,其中 face目录就是 opencv_contrib 中独有的头文件

关键字OpenCV