最近在做基于opencv的课设项目,参考了很多篇教程,retry了很多次。我的编译和配置过程大多数参考这篇文章。
一、准备工具
1. 系统:Win10 64位
2. opencv3.4.1
3. opencv_contrib
opencv_contrib的版本一定要和opencv相同!!!
4. cmake
选择Binary distributions是它已经编译好了的cmake,根据自己的计算机和VS位数选择对应版本,我的是win10 64位,VS2015 64位
5. VS2015(我的是64位的community版本)
二、Cmake编译
1. 在opencv文件夹下新建一个mybuild文件夹(命名任意),存放我们的编译结果
2. 安装cmake,打开bin目录下的cmake-gui.exe
在where is the source code输入opencv地址/sources地址
在where to build the libraries输入保存编译结果的地址
点击Configure选择对应自己电脑上的VS版本的编译器,对于VS2015来说,32位的选择Visual Studio 14 2015,64位的选择Visual Studio 14 2015 Win64,点击finish后自动进行第一次编译
3. 第二次编译
第一次编译完成后会显示编译opencv所需要的参数。在Name为OPENCV_EXTRA_MODULES_PATH的Value中填入opencv_contrib-3.0.0的路径/modules,如下图所示。然后点击Configure进行第二次编译。
第二次编译完后一定要检查一下参数列表,如果参数列表还有红色标记的条目,就再尝试几次configure,直到所有条目都是白色为止。
4. 点击Generate,直到出现Generate Done
这时候在我们的mybuild文件夹下可以看到编译出的文件。
5. 检查一下附加模版是否成功编译并加入到opencv中
进入之前我们新建的mybuild文件夹下,进入modules,查看是否有下图所示的文件,这些是属于附加模块opencv_contrib的。如果没有,检查一下cmake参数列表中Name为OPENCV_EXTRA_MODULES_PATH的Value是否为opencv_contrib-3.0.0的路径/modules,不是的话重新设置、重新Configure以及重新Generate。
三、生成库文件
1. 在mybuild文件夹中,找到OpenCV.sln并打开
2. 在解决方案资源管理器中找到CMake Targets,右键点击“生成”
生成成功后,如果在mybuild文件夹中还没有出现一个名为install的文件夹,回到VS界面,右击INSTALL->仅用于项目->仅生成INSTALL,再次生成成功后就会出现install文件夹。
问题:无法打开文件‘python27_d.lib’ && 无法打开文件‘python36_d.lib’
生成INSTALL时,我碰到过下面的问题(当时忘记截图了),问题是:无法打开文件‘python27_d.lib’和无法打开文件‘python36_d.lib’
原因是我之前在电脑上安装了Anaconda2和Anaconda3,openCV用Cmake编译时都检测到了。解决方法是分别打开python2和python3对应的pyconfig.h文件,做两处修改。
如python2对应的pyconfig.h:
如果python3对应的也有问题的话也将其对应的pyconfig.h做以上修改。
四、配置
1. 系统环境变量
在计算机-环境变量-path中增加:where to build the binaries中设置的路径\install\x64\vc14\bin
注意:如果是32位的VS的话,路径应该是where to build the binaries中设置的路径\install\x86\vc14\bin
2. 配置新的工程
打开VS2015,新建一个工程
找到属性管理器->Debug|x64->右击Microsoft.Cpp.x64.user->属性
1. VC++目录-包含目录
1 | <where to build the binaries中设置的路径>\install\include |
2. VC++目录-库目录
1 | <where to build the binaries中设置的路径>\install\x64\vc14\lib |
3. 链接器-输入-附加依赖项
这里添加的.lib文件都需要出现在<where to build the binaries中设置的路径>\install\x64\vc14\lib
中。如果lib文件被添加到附加依赖项里,但是上述文件夹中没有该lib文件,会出现找不到XXX.lib的错误。
附上我的附加依赖项(共44个):
1 | opencv_aruco341d.lib |
五、激动人心的时刻——测试
配了这么久,进了好多坑,终于到检验自己的时刻了!
在项目中新建一个cpp,记得添加到工程里。输入如下代码:
1 |
|
Well Done!