为了更深入的学习和了解OPenCV的开源魅力,我们可以将OPenCV的源码进行编译,重新生成解决方案,得到二进制文件,或者修改原版官方的OpenCV代码,并编译后为自己所用,也可以编译后进入到源码中调试,方便了解部分代码的实现细节。本文记录OPenCV源码编译的一些值得推荐的教程以及编译过程中可能遇到的问题、原因及解决方案,供大家参考学习。
下面是一些源码编译的博客,写的很好,本人也是按照教程编译的,这里就不重新写了,直接将博客贴上来。
链接1:【opencv源码解析0.1】opencv库VS环境配置
链接2:【opencv源码解析0.2】opencv库源码编译
链接3:【opencv源码解析0.3】调试opencv源码的两种方式
链接4:【OpenCV入门教程之七】 玩转OpenCV源代码:生成OpenCV工程解决方案与OpenCV源码编译
【编译过程中可能遇到的问题】
- 对于编译过程中configure的解释:链接4中进行了两次configure,但实际上如果第一次configure后,对于上面的红色选项,不要慌,红色不代表配置出错,红色仅代表这些选项是第一次出现在cmake-gui这个界面,用来提示用户注意的,输出文本框底部的Configuring done可以标明我们的配置过程已经完成。红色框中没有勾选的部分可供用户根据需求自行设置,若修改了选项内容,因此需要重新configure一次。否则一次configure即可。
- 对于首次点击configure后跳出的配置平台选择弹窗,需注意:编译win32下的链接库,则下述“Optional platform for generator(if empty,generator uses: x64)”选项应选择“win32”,编译x64下链接库,此图片中默认选项即为x64,直接默认即可。这里的默认选项应该是根据电脑已安装的vs版本(x86<=>win32,x64)进行默认的。
若在源码工程中调试例程,需要win32平台,在configure选项中也同上述一样,选择“win32”即可,x64同理。不可在win32配置平台生成的源码中进行x64链接库的生成及代码调试,会出现“error C1041:无法打开程序数据库…”、“error LINK1112: 模块计算机类型X86与目标计算机类型x64冲突”类似错误,如下图所示。
原因:源码编译时选择的平台-目标计算机类型 与当前生成平台-模块计算机类型选择不一致。图中的error LINK1112是编译时平台选的x64, 生成时调试平台选择的win32。
- 若需要进入到win32和x64两个平台源码内部调试,则需生成两个平台下的链接库dll和lib,分别在configure时选则cmake编译平台为win32和x64后,再单独生成对应平台的链接库,链接库的生成及dll、lib的区别、系统路径的设置等参照上述链接1-4。