Windows系统CMake编译Opencv4.6.0源码,支持contrib库

1 前言

在使用OpenCV编写人脸识别测试程序时,碰到一个问题,无法打开人脸头文件。"fatal error C1083: 无法打开包括文件: “opencv2/face.hpp”: No such file or directory"。

刚开始以为工程头文件包含路径没配置完整,于是到OpenCV安装路径瞄了下,没有face.hpp呀???

 Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第1张图片

 莫非下载的安装包有问题?搜索后才得知,原来从官网下载的安装包opencv-4.6.0-vc14_vc15.exe,是不包含opencv_contrib模块的,而我要引用的face.hpp,恰好就在opencv_contrib中。之前通过安装包安装的OPenCV,如果用C++实现人脸识别功能,是不能用的。需要用CMake对OPenCV4.6.0和opencv_contrib-4.6.0(contrib模块版本要与OpenCV版本一致,因为OPenCV用的是4.6.0)源码进行编译,生成新的库文件和头文件。

2 准备工作

编译环境:Win10 64位系统 + CMake 3.21.0 + OpenCV4.6.0 + contrib4.6.0 + VS2022

OPenCV源码上次已经下载过了,没有contrib源码,其下载地址

GitHub - opencv/opencv_contrib at 4.6.0

或者

Gitee 极速下载/opencv_contrib - Gitee.com

github下载速度比较慢,建议从gitee下载,速度快。

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第2张图片 将opencv-4.6.0.zip和opencv_contrib-4.6.0.zip放到一个单独文件夹解压,并新建文件夹build(camke编译源码使用)。示例路径是G:\opencv4.6.0\build,您可以根据自己情况创建路径。

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第3张图片

3 CMake编译

打开CMake-GUI,设置相关路径如截图

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第4张图片

点击“Configure”按钮,然后选择MSVC编译选项,Visual Studio 17 2022,x64位编译(如果您电脑安装的是2019或其它版本,那就选择2019,也可以)

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第5张图片

点击“Finish”按钮,开始配置。第一次Configure完之后,一堆红色区域,别急

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第6张图片

在“Search”框中输入extra,搜索扩展模块配置项,填入contrib模块的modules路径,如截图,笔者电脑上是G:\opencv4.6.0\opencv_contrib-4.6.0\modules

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第7张图片

在“Search”中输入world,找到编译选项BUILD_opencv_world

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第8张图片

 该选项默认没勾选,编译源码时,会生成opencv所有子模块的lib文件,一大堆,开发引用库文件时,很不方便。强烈推荐勾选该选项。这样编译源码后,就可以用一个opencv_worldlib文件代替所有的lib了。

下边是没勾选BUILD_opencv_world,编译源码生成的lib文件截图(看着头大)

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第9张图片

在“Search”中输入examples,勾选编译示例代码

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第10张图片

 配置好上边几个编译选项后,重新点击“Configure”进行配置,操作两三次后,红色区域神奇消失,cmake最下边显示“Configuring done”,表示配置完成。

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第11张图片

 此时点击“Generate”按钮,生成MSVC工程文件。至此CMake编译结束,下边就可以使用Visual Studio打开OpenCV工程代码,进行编译了。

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第12张图片

 4 VS编译生成

下边编译步骤比较简单,编译过程会花费些时间,笔者电脑上完成编译花费了1个多小时。

在路径G:\opencv4.6.0\build,点击OpenCV.sln打开工程

 Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第13张图片

点击CMakeTargets,选择ALL_BUILD,分别使用Debug x64和Release x64模式,生成OpenCV对应的库文件

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第14张图片

Debug x64

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第15张图片

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第16张图片

 Release x64

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第17张图片

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第18张图片

5 安装

接下来可以运行INSTALL程序,安装头文件,库文件等文件

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第19张图片

笔者电脑安装路径G:\opencv4.6.0\build\install

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第20张图片

到include目录中看看,face.hpp文件便有了哈:)

Windows系统CMake编译Opencv4.6.0源码,支持contrib库_第21张图片

6 参考

CMake编译OpenCV源代码 - 知乎

opencv3.4.6 vs2017 win10 配置contrib库 教程_金陵小松许的博客-CSDN博客

OpenCV 之 编译配置 4.6.0 - 飞鸢逐浪 - 博客园

你可能感兴趣的:(OpenCV,C/C++,windows,opencv,人工智能)