原文链接:http://www.juzicode.com/opencv-note-cmake-project-vs-windows
OpenCV除了提供可以直接使用的库文件,还可以下载其源码手动编译、制作库文件,不过源码中并没有提供可以直接编译的工程文件,需要借助CMake工具完成工程文件的构建。
获取源码
从官网opencv.org找到github链接,或者直接进入https://github.com/opencv/opencv/releases找到相应的版本,这里以4.5.3为例:
![](http://www.juzicode.com/wp-content/uploads/2021/07/image-36.png)
在该版本下有多个发布包,包含了Android、ios等版本,opencv-4.5.3-docs.zip为说明文档,opencv-4.5.3-vc14_vc15.exe是Windows系统下已编译的发布包,包含dll库,lib包,头文件等,如果不想从源码编译,可以直接在工程中使用该发布包。Source code 是其源码,包含了2种格式的压缩包,选择其中一个即可,这里我们选择下载zip格式的源码文件。
获取CMake工具
下载下来的源码解压缩后可以看到并不能直接编译,还需要用CMake工具将文件组织成工程形式。
OpenCV支持用CMake构建工程,首先到https://cmake.org/download/下载CMake工具:
![](http://www.juzicode.com/wp-content/uploads/2021/07/image-37-1024x439.png)
CMake工具也提供了windows系统的各种版本,这里选择64位的免安装版本。CMake工具的64位和32位和最后生成的OpenCV工程bit版本无关。
构建工程
下载的免安装版解压后在bin目录下找到cmake-gui.exe,双击打开。
在“source code”一栏选择源码所在的目录,在”to build”一栏选择生成后的工程目录。
![](http://www.juzicode.com/wp-content/uploads/2021/07/image-38-1024x560.png)
然后点击Congfig按钮,在弹框中选择编译器和目标平台版本,这里选择VS2015和x64版本:
![](http://www.juzicode.com/wp-content/uploads/2021/07/image-39-1024x558.png)
点击Finish按钮等待一段时间,待状态栏提示“Configuring done”。
![](http://www.juzicode.com/wp-content/uploads/2021/07/image-40-1024x264.png)
再点击Generate生成工程文件,等待状态栏提示“Generating done”。
![](http://www.juzicode.com/wp-content/uploads/2021/07/image-41-1024x265.png)
编译工程
回到生成目录就能看到opencv.sln文件,。
![](http://www.juzicode.com/wp-content/uploads/2021/07/image-42.png)
双击打开sln文件就能看到整个工程文件,选择release版本,点击“生成-生成解决方案”就可以开始编译了,编译时长根据机器配置可能需要10-20分钟。
![](http://www.juzicode.com/wp-content/uploads/2021/07/image-43.png)
编译完成后再找到INSTALL工程,点击生成:
![](http://www.juzicode.com/wp-content/uploads/2021/07/image-44-1024x529.png)
在cmake设置的”to build”一栏设置路径的install目录下就能看到头文件目录include和库文件目录x64:
![](http://www.juzicode.com/wp-content/uploads/2021/07/image-45.png)
在x64\vc14\bin目录下打开命令行输入opencv_version.exe就能查看opencv的版本号:
![](http://www.juzicode.com/wp-content/uploads/2021/07/image-46.png)
至此整个x64版本的构建、编译工作完成,如果要构建、编译x86(32位)版本,再回到CMake构建那一步重新设置to build目录,更换目标平台为x86重新走一遍。
![](http://www.juzicode.com/wp-content/uploads/2021/07/image-47-1024x557.png)