本博文主要记录opencv编译过程中遇到的问题,能够让大家跳过这些已经踩过的坑。
1.下载opencv-4.1.0以及opencv-contrib-4.1.0源码
2.CMake源码
博主使用的CMake工具的版本是3.14.4。打开CMake,路径设置如图
其中,Where is source code:路径指向下载opencv源码路径
Where to build the binaries:路径指向CMake结果的路径,一般自己新建一个目录,然后指向这个路径
OPENCV_EXTRA_MODULES_PATH:路径指向opencv_contrib-4.1.0文件下的modules路径
其中一个坑是,如果使用opencv SURF特征检测,则编译时候需要勾选OPENCV_ENABLE_NONFREE,不然编译的dll不能使用SURF,所有的nonfree的都不能使用。
configure,Generate,都没有问题的话,则点击Open Project
3.编译lib,dll
打开vs2015,单击生成,再弹出菜单中选择重新生成解决方案,经过漫长的等待,生成完毕。然后在CMakeTargets目录下右键单击INSTALL,在弹出菜单下->仅用于项目->仅生成INSTALL,这样在build文件夹下生成install,这里面就是最终的编译结果,包括include,bin,x64,大功告成。
4.测试
vs2015新建测试项目,项目属性包含目录和库目录配置如下图
因为我编辑的是64位的库所以引用以及项目都是采取x64的。
连接器->输入->附加依赖项如下
这个lib正是编译出来的所有lib,但是一个文件下很多lib不能手动一个个去复制名称吧,其实写一个python脚本可以一次性取出所有的lib名称,当然你要是取jpg文件也是同样,稍微改改进行。
#coding:utf-8
import os
def ListFile(root):
file = open("./dll.txt",'a')
for filename in os.listdir(root):
if filename.endswith('.lib'):
line = filename + '\n'
file.write(line)
file.close()
if __name__ == '__main__':
root = r"D:\workstation\ExtralLib\opencv4.1-build-X64-debug\x64\vc14\lib"
ListFile(root)
最后就上一张SURF效果图
最后的最后,如果不想自己编译,那么我就直接把编译的结果直接放在这边,想用的自己拿。