Content

  • 准备工作
  • 第一步
  • 第二步
  • 第三步
  • 第四步
  • 第五步
  • 测试


准备工作

1、cmake(如果需要编译X64的库,需要下载X64cmake)

链接:https://cmake.org/download/

2、Opencv源码和opencv_contrib源码(切记!切记!切记!版本一定要相同。)

譬如说,OpenCV 4.3.0 和 OpenCV_contrib 4.3.0

链接:https://github.com/opencv

什么?你不知道怎么下载相同的版本?那看这里来

点击issue,所有发行版都在这里啦。后面的号码对应的就是版本号。

链接:https://github.com/opencv/opencv/releases

3、VS2015、VS2017、VS2019都可以啦

window opencv contrib编译 opencv怎么编译_#include


接下来就开始正式开始操作啦。

第一步

找到下载的cmake目录。打开bin目录,双击cmake-gui.exe

window opencv contrib编译 opencv怎么编译_c++_02


window opencv contrib编译 opencv怎么编译_opencv_03

第二步

如图所示

第一个黄线位置选择你刚才下载的opencv4.3.0目录,是根目录并不是你下载的文件的某一个子目录。

第二个黄线位置选择你需要构建的目录,建议创建一个空目录。我这里是创建了一个空的build目录来进行存放解决方案。

window opencv contrib编译 opencv怎么编译_cmake_04

第三步

在填写完上述两个地址以后,然后点击左下角的configure按钮,会弹出如下的操作框,这里需要选择你的编译器版本和需要生成的库的类型是32位的还是64位的。我在这里选择VS2015、X64。单选框选择第一个use default native compilers。点击finish。自动开始configure

window opencv contrib编译 opencv怎么编译_c++_05

第四步

在第一次configure之后,界面一般会有很多红色的项,找到

OPENCV_EXTRA_MODULES_PATH,填入你下载第二个库OpenCV_contrib中modules路径。

(注意:这里需要填写的是OpenCV_contrib模块中的子目录modules路径)

继续点击configure,会发现一些红色项变白色了,但是还会有一些红色的项,什么都不用改,再次点击configure,终于,所有的项都变白色了。点击generate。

window opencv contrib编译 opencv怎么编译_c++_06

第五步

找到你创建的那个空的目录(刚才第二个黄线的地址),会生成如下的内容。双击下面标记红色线的解决方案,会开始加载项目。

window opencv contrib编译 opencv怎么编译_cmake_07


项目加载完以后会有如下的模块被加载,如果有face模块,证明加载contrib库成功。

window opencv contrib编译 opencv怎么编译_#include_08


成功以后默认是ALL_BUILD项目,直接点击上面的本地window调试器运行,他就会自动开始进行编译。

window opencv contrib编译 opencv怎么编译_#include_09


window opencv contrib编译 opencv怎么编译_c++_10


编译完以后会有如下的弹窗(这个没事,因为他只是生成库并不能直接运行)。

window opencv contrib编译 opencv怎么编译_c++_11


至此,我们就生成了所有的库,但是有一个问题,不是官方给的那种有bin、include目录的那种。那就需要构建INSTALL目录了。右击INSTALL目录 -> 仅用于项目 -> 仅生成INSTALL项目。

window opencv contrib编译 opencv怎么编译_cmake_12


过程:

window opencv contrib编译 opencv怎么编译_cmake_13


至此,所有的操作就已经完成了。我们打开刚才的解决方案路径,赫然发现里面多了一个install的目录。

window opencv contrib编译 opencv怎么编译_c++_14


双击打开,这不是就和官方下载的一模一样嘛!!!再打开X64

window opencv contrib编译 opencv怎么编译_cmake_15


window opencv contrib编译 opencv怎么编译_opencv_16


里面的bin和lib就是我们需要的库了。。。。

window opencv contrib编译 opencv怎么编译_cmake_17

测试

赶紧测试一把:

#include <opencv2/opencv.hpp>
#include <iostream>
#include <opencv2/face.hpp>
#include <opencv2/highgui/highgui_c.h>

using namespace  cv;
using namespace cv::face;
using namespace std;

int main()
{
	Mat m1 = imread("girl2.jpg");
	namedWindow("sss", CV_WINDOW_NORMAL);
	imshow("sss", m1);
	waitKey(50000);
	return 0;
}

结果:

window opencv contrib编译 opencv怎么编译_opencv_18

完结,撒花。。。。。。。。