经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《从零学习OpenCV 4》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。

安装完成基础模块后,已经可以满足大多数初学人员的正常使用。然而有很多非常实用的功能并没有被集成在基础模块中,而是被放在了opencv_contrib扩展模块中,例如人脸识别、生物视觉、特征点提取等众多非常强大的功能。扩展模块是对基础功能的补充,由于某些算法具有专利保护,无法放在基础模块中,而这部分算法却是学习图像处理常用的算法,例如,大名鼎鼎的有专利保护的SIFT特征点提取算法就在这个扩展模块中,虽然有专利,但是使用OpenCV的开发者依然可以免费用于非商业用途。本小节将为读者介绍如何在Windows和Ubuntu系统中安装opencv_contrib扩展模块。

首先需要在GitHub上获取与自己OpenCV版本相匹配的opencv_contrib安装包,为节省读者寻找安装包的时间,本书资源的3rdparty中提供了opencv_contrib 4.0和4.1两个版本的安装包。下载安装包后,将安装包解压到先前的opencv文件夹内,以备后续的安装使用。

1

01

Windows系统中安装扩展模块

在Windows系统中安装opencv_contrib扩展模块需要用到CMake编译器,在CMake官网下载.msi安装包,通过双击直接完成安装任务。本书使用的是CMake 3.7.0版本,这里需要注意,由于OpenCV版本更新速度慢于CMake,因此不推荐使用过高版本的CMake编译器,只要满足OpenCV 4.0要求的最低版本即可,因此为了减少读者编译过程中的错误,建议与笔者使用同版本的CMake。打开安装好的CMake软件,可以看到如图1-17所示的页面。我们需要选择OpenCV源码所在地址与编译文件的输出地址。源码放在了“…\opencv\sources”文件夹中,为了与OpenCV原有文件区分,在 “…\opencv”中创建一个名为newbuild文件夹用于存放编译输出文件。

opencv4 训练_opencv4 训练

   图1-17 CMake编译界面

之后通过点击【Configure】按钮,选择将源码编译成与Visual Studio版本相对应的项目工程文件,作者安装的是Visual Studio 2015,同时想使用64位的OpenCV,因此选择“Visual Studio 14 2015 Win64”选项,同时选择本地编辑器“Use default native compilers”。选择配置的操作界面如图1-18所示。

opencv4 训练_opencv4 图像特征匹配_02

图1-18 配置Visual Studio版本与编译工程的位数

之后再次点击【Configure】开始构建,当出现“Configuring done”后说明构建成功,在CMake界面会出现很多变量,如图1-19所示。首先找到“BUILD_opencv_world”和“OPENCV_ENABLE_NONFREE”这两个变量,在变量后面的方框内打上“√”。第一个变量的含义是生成一个大的.lib文件,在配置链接器时只有一个“opencv_world410d.lib”文件。第二个变量的含义是为了在编译成功后可以使用具有专利保护的算法,如果该变量不被选中,就不能使用例如SIFT算法在内的具有专利保护的算法,之后找到“OPENCV_EXTRA_MODULES_PATH”变量,该变量的含义是告诉编译器扩展包的源码在哪里,选择我们刚才下载的opencv_contrib安装包里的modules文件夹。如果这个变量为空,在编译过程中也不会报错,只是安装了OpenCV的基础版。

opencv4 训练_opencv4 图像特征匹配_03

图1-19 Configuring Done后的CMake界面

再次点击【Configure】,直到所有的红色变量变成白色,之后点击【Generate】开始编译。编译成功后会在newbuild文件夹中生成许多文件,找到OpenCV.sln文件,用Visual Studio 2015打开该文件并重新生成解决方案,这个过程会比较漫长。经过漫长时间的等待,在资源管理器中找到CMakeTargets中的INSTALL文件,右键选择“仅用于项目”中的“仅生成INSTALL”,会在newbuild文件夹中生成一个名为install的文件夹,我们用来环境配置的所有文件都存放在这个文件夹中。按照前面介绍的配置OpenCV环境的方式配置即可。

opencv4 训练_opencv4 训练_04

提示

编译后newbuild 文件夹非常的大,会有几个G的文件,但是除了install文件夹最重要,绝大多数文件都是垃圾文件,如果觉得硬盘存储量有限,可以选择性的删除一些文件。

1

02 

 Ubuntu系统中安装扩展模块 

在Ubuntu系统中安装扩展模块比较容易,只需要将代码清单1-6中的cmake命令进行修改,添加上扩展安装包的路径即可,具体内容在代码清单1-11中给出,其余步骤与安装OpenCV基础模块没有区别。

代码清单1-11 编译OpenCV命令
1.  cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..

opencv4 训练_cmake配置opencv出错_05