编译opencv和opencv_contrib

起因是需要做图像匹配,但是由于是手机截屏,模板图可能与截图之后的分辨率不一样,所以不能使用opencv的模板匹配,在使用feature(特征)匹配的时候,用到了"opencv2/xfeatures2d.hpp",而这个模块是opencv扩展里面的,如果想获得需要自己编译,官方提供的安装程序只有标准版。

从github下载opencv和opencv_contrib

用cmake打开opencv的目录,点击configure,选择你需要编译的版本

比如我的是visual studio 2017 64位

第一次configure完成后,有几个配置选项

  • 可以把python和java相关的选项去掉,因为我们要的是c++的

  • 把BUILD_opencv_world打开,这样我们引入lib只需要一个就好了,不然需要添加很多个

  • 设置OPENCV_EXTRA_MODULES_PATH,目录是opencv_contrib/modules

  • 把OPENCV_ENABLE_NONFREE打开,因为我们需要扩展库

再次点击configure,等待完成,点击generate

打开我们的工程,开始编译

编译过程中可能遇到的问题是提示vgg_generated_120.i、boostdesc_binboost_256.i等之类的文件不存在,原因是编译脚本中有一个现在这些文件,但是由于一些原因没有下载下来,可以打开工程目录下的download_with_wget.sh或是download_with_curl.sh,查看每一个连接,手动在浏览器打开,然后保存到opencv_contrib\modules\xfeatures2d\src,再次编译就可以了。

如果你是从opencv/.cache.xfeatures2d目录下拷贝的对应的文件,有可能会报PRrows, PRcols, PRidx, PR, PJrows, PJcols, PJidx这些参数找不到的错误,undefined,那是因为你拷贝的文件是空的,没有下载成功。所以还是手动下载,然后拷贝到对应目录

运行ALLBUILD,这个过程比较慢,等编译结束,再运行INSTALL,如果上面配置工程的时候没有额外配置目录,默认安装在编译目录的install下。把install目录下的文件拷贝到对应位置,新建的工程引用这个目录下的类库和头文件就可以了

posted @ 2020-08-10 15:16  秋来叶黄  阅读(563)  评论(0编辑  收藏  举报