本文主要是介绍Windows+CMake+VisualStudio2019编译C++的OpenCV+OpenCV_contrib 64位和32位库文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 0、速成编译方法
- 1、软件版本及下载地址
- 2、软件安装
- (1)cmake安装
- (2)Visual Studio 2019安装
- (3)OpenCV3.4.11安装
- (4)OpenCV_contrib 3.4.11安装
- 3、OpenCV 64位库文件编译流程
- (1)新建build文件夹
- (2)cmake编译opencv生成visual studio的解决方案 .sln文件
- (3)Visual studio 2019生成所需要的64位opencv库文件
- 4、OpenCV 32位库文件编译流程
- (1)新建build文件夹
- (2)cmake编译opencv生成visual studio的解决方案 .sln文件
- (3)Visual studio 2019生成所需要的32位opencv库文件
- 5、OpenCV 代码测试案例
- 参考阅读
0、速成编译方法
如果你仅仅是需要用到opencv64位或32位库文件,并不想去了解后面那些繁琐的编译过程,或者按照教程编译遇到问题,没关系嗷,你可以直接下载我编译好的opencv和opencv_contrib库文件压缩包(rar文件约370M),下载地址:交大云盘 、百度云盘(提取码:7357),下载解压后就可以按照第5节的测试案例测试文件是否可用。
1、软件版本及下载地址
以下是本人编译所用版本,供参考,个人认为大版本一致即可,不必一模一样
- cmake 3.18.2(64位),下载地址:https://cmake.org/files/v3.18/cmake-3.18.2-win64-x64.msi
- Visual Studio 2019 16.10.1(64位),下载地址:https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community&rel=16
- OpenCV 3.4.11,下载地址:https://sourceforge.net/projects/opencvlibrary/files/3.4.11/opencv-3.4.11-vc14_vc15.exe/download
- OpenCV_Contrib 3.4.11,下载地址:https://github.com/opencv/opencv_contrib/releases/tag/3.4.11
2、软件安装
(1)cmake安装
点击下载的 .msi 安装包安装即可,cmake的gui如下所示。
(2)Visual Studio 2019安装
点击安装包选择安装路径即可,安装组件需要勾选 使用C++的桌面开发,以确保安装C++编译所需环境
(3)OpenCV3.4.11安装
点击下载好的安装包自动解压即可,这个安装包本质就是一个压缩文件,解压后得到cpp源文件和预先build好的dll和lib库文件,以及需要的include头文件,但是这些库文件和头文件都是基本的开源库,如果需要用到SURF、SIFT特征匹配的就需要编译后续的OpenCV_contrib库。我自己解压安装到的文件夹路径是E:\3D_R\Software\OpenCV_x64
个人经验:在初学opencv的时候遇到某些函数的功能不太了解,可以直接去官网找到对应版本的说明文档(链接),然后查找关键字就能很快地获取到相关的信息,如下图
(4)OpenCV_contrib 3.4.11安装
不需要安装,把github下载的包解压就完事了,把它解压到和opencv安装的同级目录,看着舒服一点
3、OpenCV 64位库文件编译流程
(1)新建build文件夹
在opencv安装同级目录新建一个build_x64文件夹,方便后续和32位的build夹区分开,如下图
(2)cmake编译opencv生成visual studio的解决方案 .sln文件
-
step 1: Where is the source code: 这一栏就点击右边Browse source选择opencv安装路径里面的sources文件夹,了解C++编译过程的朋友们知道这一步就是选择包含cpp源文件和CMakeLists文件的文件夹,如下图
-
step 2:Where to build the binaries: 这一栏就选择上一步新建的build_x64文件夹,用于存放编译过程产生各种中间文件和最终库文件,如下图
-
step 3:点击Configure按钮会弹出对话框,要你配置编译器和各项参数,首先配置编译器,默认的generator就是安装的Visual Studio 16 2019,选择平台为 x64,因为我们要编译的是64位的库文件嘛,最后点击Finish ,此时cmake开始配置编译所需文件,如下图
-
step 4:等待cmake编译一会儿,当cmake最下方的进度内容最后出现Configuring done就代表配置完成了
-
step 5:由上图可以看到configuring done结束后,上方有很多红色项,这里面就是cmake编译的一些配置条件,了解cmake原理的知道这些选择项都是来自于sources文件夹里的那个CMakeLists.txt。因为我们需要把opencv_contrib里面的非开源算法都编译好,所以这时需要做三步:
(1)勾选BUILD_opencv_world这一项,方便之后开发的时候调用一个dll文件就搞定所有库的引用
(2)在 search 搜索框输入non,然后勾选找到的 OPENCV_ENABLE_NONFREE 这一项,意思就是使用非开源算法库
(3)在 search 搜索框输入mod,然后找到了 OPENCV_EXTRA_MODULES_PATH 这一项,点击这一栏最右边的 … 弹出对话框,选择我们下载好的 opencv_contrib 文件夹里面的那个 modules 子文件夹即可。这个文件夹里都是非开源的一些实用的算法cpp源文件
-
step 6:再次点击 Configure 配置一遍,这一步也需要等待一会儿,直到读条结束,出现configuring done。和 step 4 的图一样的,这儿就不放图了
-
step 7:点击 Generate 等待一小会儿,出现 Generating done 就生成 .sln 解决方案了。这个时候可以在 build_x64 文件夹里面看到 OpenCV.sln 文件了,如下图
(3)Visual studio 2019生成所需要的64位opencv库文件
- step 1:打开 OpenCV.sln 解决方案,点击菜单栏的 生成 选择 批生成,直接批量生成我们需要的 Debug和Release模式下的opencv库文件
只需要勾选 ALL_BUILD和INSTALL 的 Debug|x64和Release|x64 这四项就好了,然后点击生成,等待大概十几二十分钟的样子,整个编译过程就结束了!编译好的库文件和可执行文件分别存放在build_x64\install和build_x64\bin路径下的。
- step 2:把我们编译好的、存放在 build_x64\install路径下库文件夹include和x64复制,然后粘贴到我们最开始安装opencv的 opencv\build 文件夹里面,中间提示什么替换文件之类的,选择替换就好了,没什么影响的,如下图
- step 3:把 build_x64\bin\ Debug里面的zlibd1.dll,opencv_world3411d.pdb 以及Release 文件夹的 zlib1.dll,opencv_world3411.pdb 都复制粘贴到opencv安装目录的 opencv\build\x64\vc16\bin文件夹里面,尤其是 zlibd1.dll 和 zlibd.dll 两个文件,如果不复制粘贴到 bin文件夹里面去的话,后续在VS的Debug模式下就没办法成功运行,就会提示 找不到zlibd1.dll,请尝试重新安装 这样的错误!请务必注意这一点。至此64位库文件编译彻底结束。
4、OpenCV 32位库文件编译流程
(1)新建build文件夹
这部分内容其实就一个地方和64位的有区别,其它的步骤都是一模一样的,在opencv安装路径同级目录新建一个build_x86文件夹,如下图
(2)cmake编译opencv生成visual studio的解决方案 .sln文件
所有步骤与64位配置方法相同,但是注意,如下图,首先选择菜单栏的File,然后Delete Cache,把编译64位过程的缓存信息清空掉,免得后期出岔子。
然后把
- where to build the binaries:这一栏的路径改为build_x86,
- 再选择Configure,最重要的区别于64位的一步,编译器平台选择 Win 32,
- 剩下的什么 nonfree、modules、configure和generate流程和64位编译过程一模一样,切记,每一步都要一致,最后就能在build_x86里面看到 32位的opencv .sln文件了!
(3)Visual studio 2019生成所需要的32位opencv库文件
-
按照与64位相同的批生成处理步骤,生成32位的库文件。
-
与64位复制粘贴那一步相同,但是仅需要把32位 build_x86\install 路径下的 x86文件夹复制粘贴到opencv\build 文件夹里面,include不复制粘贴是因为64位和32位头文件是一模一样的,都是.h文件嘛,没必要再复制粘贴了。
-
再把build_x86\bin\ Debug和Release 文件夹里面的opencv_world3411d.pdb 和 opencv_world3411.pdb 复制粘贴到opencv安装目录的 opencv\build\x64\vc16\lib文件夹里面,一是为了保持和官方build后的文件夹内容一模一样,32位编译过程到此结束。
5、OpenCV 代码测试案例
(1)VS2019新建一个空项目,名称我取的opencvtest,放在opencv安装目录同级目录下的。
(2)添加包含文件和库文件,步骤如下【注意:下面用到的路径都是在opencv安装目录相关的路径,与之前build 64和32位的编译路径没关系了】:
- 菜单栏 【项目】->【属性】,打开项目的属性页
- 左上角配置选择对应的编译模式(Debug或Release),我选择的是Debug模式,平台我选择的是WIN32
- 点击左侧选项卡【VC++目录】,右边找到【包含目录】,添加编译好的opencv的头文件,我的路径为 E:\3D_R\Software\OpenCV_x64\opencv\build\include ,就是之前我们编译复制粘贴到opencv安装目录里的include头文件文件夹;【VC++目录】,右边找到【库目录】,添加编译好的 32位 opencv3411d.lib 文件所在的文件夹路径,即 E:\3D_R\Software\OpenCV_x64\opencv\build\x86\vc16\lib,
- 点击左侧选项卡【C/C++】,右侧第一行【附加包含目录】添加同上的 include 路径:E:\3D_R\Software\OpenCV_x64\opencv\build\include
- 点击左侧选项卡【链接器】->【常规】,找到右侧【附加库目录】,添加lib路径: E:\3D_R\Software\OpenCV_x64\opencv\build\x86\vc16\lib
- 点击左侧选项卡【链接器】->【输入】,找到右侧【附加依赖项】,将编译好的32位 opencv3411d.lib 文件名添加进去,即:opencv3411d.lib。(如果在Debug 模式下运行,就添加末尾带d的opencv3411d.lib的库文件,如果是Release模式,就添加末尾没有d的opencv3411.lib文件,d代表debug模式,没毛病吧)
(3)测试代码,读入图片并显示:
#include <iostream>#include "opencv2/opencv.hpp" // opencv libraryheader file#include "opencv2/highgui.hpp"using namespace std;using namespace cv; //opencv namespaceint main()
{Mat testimage = imread("E:\\3D_R\\Software\\OpenCV_x64\\cmakegui.jpg");//图片路径自己随便改imshow("test", testimage);waitKey(0);return 0;
}
参考阅读
[1]:https://blog.csdn.net/weijifen000/article/details/93377143
这篇关于Windows+CMake+VisualStudio2019编译C++的OpenCV+OpenCV_contrib 64位和32位库文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!