OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

小白学习OpenCV,因为要用到opencv_contrib中的功能,所以要对OpenCV进行重新编译。参考了网络上很多相关的教程,基本流程都是一样的,但是安装版本都比较旧,还是存在一些小坑的,经过半天的尝试终于编译成功,特将过程记录于此。

本次的安装环境为OpenCV3.4.2+VS2015+CMake3.12.1+Win10专业版,加拓展模块opencv_contrib重新编译,OpenCV是截至到目前(2018.8)的最新版本。

1.前期准备:

(1)在CMake官网下载安装文件,有安装版和免安装版,都是一样的。这里我用的是最新版,个人认为版本差别无影响,喜欢用新版本。安装过程十分简单,这里不再详述。如果下载的是zip压缩包直接解压,在文件夹里找到exe文件即可使用。

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

 

(2)下载opencv_contrib扩展模块的压缩包。对于新手来说,这一步如果不注意,很容易出现版本不对应的问题,导致后期在编译的时候出现各种错误,所以一定要仔细确认,其文件在Github下载。对应使用的OpenCV版本,所以这里下载的文件为:opencv_contrib-3.4.2,小编一开始下载成了opencv_contrib-master,导致后来出现了很多错误。下载完解压到指定路径即可,值得提醒的是:为了避免出现意外错误,所有使用的文件路径都要保证不含中文字符。

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

 

2.使用CMake生成VS工程。

(1)设置文件路径:首先打开CMake软件,路径1是在安装完OpenCV后安装路径下(或是解压后的)的source文件夹;路径2是你要保存生成的VS工程的文件夹,可以自定义,这里新建了一个opencv_new_build文件夹。注意路径都不含中文。

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

(2)设置好路径后,点击Configure按钮,会提示选择编译器环境,选择对应版本,这里使用的是VS2015 64位版,点击Finish进行第一次配置。等待第一次配置完成,如果过程中出现问题,会在输出窗口输出错误信息,根据这些错误信息进行逐一解决。

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

(3)第一次配置完成后,信息输出窗口会有提示。窗口中会有红色区域,继续点击Configure按钮,至红色消失。

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

(4)勾选BUILD_opencv_world选项,可在生成库文件时生成集合库,这样显得比较简洁,不勾选也同样可以,在后面编译的时候会生成独立库文件,会有40多个。添加扩展模块,即在OPENCV_EXTRA_MODULES_PATH选项后添加opencv_contrib-3.4.2下的modules文件夹路径,例如此处为:F:\MYFile\OpenCV\OpenCV_Install\opencv_contrib-3.4.2\modules

添加完模块路径后继续点击Configure按钮,至无错误无红色出现。如果信息窗口出现一些是可以不用安装的红色信息是可以忽略的,例如只用C/C++开发,电脑没有安装Python环境,就会提示没有找到Python相关文件,不安装....之类的,不影响成功配置。

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

(5)待配置完成后,点击Generate按钮,等待生成完成,信息窗口提示:Generating done,即在输出目录下生成VS工程。这里存在一个待解决的问题,生成完成后CMake界面的Open Project按钮是灰色的,不能直接打开,而且后面的进度条也未显示,不知道是不是软件的Bug,但是经尝试不影响后面的过程。

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

 

3.用VS进行编译。

(1)为了避免意外错误,在打开VS软件时,右键,以管理员身份运行。在VS中打开输出文件目录下的工程文件。工程内可以查看OpenCV的源码。

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

(2)将解决方案调整至Debug模式,默认也会是这种模式。然后点击菜单栏生成菜单,点击重新生成解决方案。等待重新生成,项目比较大,时间会较长,全部生成后的文件夹有10G以上。如过编译失败,那么就只能根据输出信息逐项解决问题了,或是删掉文件,重新用CMake生成。编译成功后,在解决方案资源管理器中选中“INSTALL”,右键,仅用于项目,仅生成INSTALL,等待生成成功,此时项目文件夹下会生成install文件夹,就是我们所需要新编译的文件了,但此时还只有Debug模式的库。

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

(3)将解决方案调整至Release模式,重复上述步骤,即可在install文件夹里生成Release版的库文件。文件名后面带d的是Debug版的,不带d的即是Release版的。因为在前面选择了生成集合库,所以这里生成的库文件只有4个,如过没选择生成集合库就是40多个了,因为把那个版本的删了,这里忘记了截图,只是在后面添加库路径的时候会多添加一些而已。

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

(4)此时的install文件夹就是我们重新编译后生成的所需要的文件了,相当于安装OpenCV时的build文件夹,其基本内容也是一致的,但是多了拓展模块中的功能。我们可以直接包含进我们自己的OpenCV的VS工程中使用。不过我都是复制到原来的build文件夹路径使用,而此时的OpenCV工程源码我们也可以根据需要选择保留或者删除了。而如何把OpenCV的SDK添加到VS工程里这里不再详述,可以参考网上的例子,主要包括配置环境变量、配置工程包含目录、配置工程库目录和配置链接库等几个步骤。

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

 

至此我们的重新编译工作就完成啦!

OpenCV3.4.2+opencv_contrib3.4.2+VS2015+CMake3.12.1+Win10编译过程

过程参考了网络上诸多文章,在此表示感谢!

来自公众号:科技格调