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

13 篇文章 9 订阅

1 前言

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

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

 

 莫非下载的安装包有问题?搜索后才得知,原来从官网下载的安装包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

注意:笔者这里用的Cmake版本是3.21.0,请使用这个版本或比这个版本高的Cmake,否则Cmake编译过程可能报错。

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

GitHub - opencv/opencv_contrib at 4.6.0

或者

Gitee 极速下载/opencv_contrib - Gitee.com

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

 将opencv-4.6.0.zip和opencv_contrib-4.6.0.zip放到一个单独文件夹解压,并新建文件夹build(camke编译源码使用)。示例路径是G:\opencv4.6.0\build,您可以根据自己情况创建路径。

3 CMake编译

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

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

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

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

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

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

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

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

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

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

 4 VS编译生成

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

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

 

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

Debug x64

 Release x64

5 安装

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

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

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

笔者已将编译好的安装包文件上传至Opencv4.6.0+contrib4.6.0安装包,如果您觉得自己编译麻烦,也可以从这里下载直接使用。

6 参考

CMake编译OpenCV源代码 - 知乎

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

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

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
安装OpenCV 4.6.0的步骤如下: 1. 安装依赖包 ``` sudo yum install epel-release sudo yum install cmake gcc gcc-c++ kernel-devel kernel-headers python3 python3-devel python3-pip \ gtk2-devel libpng-devel libjpeg-turbo-devel jasper-devel openexr-devel libtiff-devel libwebp-devel \ tbb-devel eigen3-devel gstreamer-plugins-base-devel ffmpeg-devel freeglut-devel mesa-libGL mesa-libGL-devel \ mesa-libGLU mesa-libGLU-devel libv4l-devel dc1394-devel libdc1394-devel libv4l2-devel libdc1394-22-devel ``` 2. 下载OpenCV ``` wget -O opencv.zip https://github.com/opencv/opencv/archive/4.6.0.zip wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.6.0.zip unzip opencv.zip unzip opencv_contrib.zip mv opencv-4.6.0 opencv mv opencv_contrib-4.6.0 opencv_contrib ``` 3. 编译安装OpenCV ``` cd opencv mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -D PYTHON3_EXECUTABLE=$(which python3) \ -D PYTHON_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \ -D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \ -D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \ -D BUILD_opencv_python3=yes \ -D BUILD_opencv_python_bindings_generator=no \ -D WITH_CUDA=OFF \ -D WITH_TBB=ON \ -D WITH_V4L=ON \ -D WITH_OPENGL=ON \ -D BUILD_EXAMPLES=OFF \ -D BUILD_DOCS=OFF \ -D BUILD_PERF_TESTS=OFF \ -D BUILD_TESTS=OFF \ ../ make -j4 sudo make install sudo ldconfig ``` 安装完成后,您可以通过以下命令检查OpenCV是否正常安装: ``` pkg-config --modversion opencv4 ``` 注:以上命令适用于CentOS 7.9系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值