重磅干货,第一时间送达
经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《从零学习OpenCV 4》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。
大多数的学生开发者使用的是Windows系统,在Windows系统中就不得不提到微软强大的Visual Studio集成开发环境(IDE),Visual Studio拥有大量不同的版本,而不同版本对于OpenCV版本的兼容性也不尽相同。虽然已经发布Visual Studio 2019,但是目前OpenCV 4.1仅支持Visual Studio 2015和Visual Studio 2017两个版本。因此对于在Windows环境下使用OpenCV4.1版本的开发者,需要将IDE更新到提到的两个版本。Visual Studio的安装和使用并不是本书的重点,读者可以去微软官网下载需要的版本,按照教程完成安装和使用。笔者使用的是Visual Studio 2015版本,因此推荐读者在学习本书的过程中与笔者使用同一版本IDE,这样可以减少在运行示例代码过程中的调试时间,将更多的精力用在学习OpenCV的算法和代码中。在Windows环境下安装主要包含5个步骤,分别是下载和安装OpenCV SDK、配置包含路径、配置库目录、配置链接器、配置环境变量。当每一步都配置完成后便可以开始OpenCV的学习之旅,接下来将会对每一步进行详细的介绍。OpenCV SDK获取非常简单,通过搜索引擎可以直接搜索到OpenCV官网,在官网中找到Releases选项,里面会有历史发布的OpenCV各个版本,找到OpenCV 4.1版本的下载界面,发现有多个可以选择项,如图1-1所示。其中Docs选项链接OpenCV的文档库包含模块组成、函数介绍等内容,不过很可惜文档全部是英文的,部分同学阅读起来还是存在着很多不方便之处。Sources选项是Ubuntu等Linux系统下的安装包,关于其安装方式,我们会在后面介绍。GitHub选项链接到GitHub中OpenCV 4.0版本的下载文件,其内容与通过其他选项下载的内容是一致的。Windows选项、iOS pcak选项和Android选项分别是在Windows系统、iOS系统和Android系统下的安装包。很遗憾OpenCV4.0并不支持Android环境的开发,但是OpenCV 4.1版本已经支持Android环境。最后一个选项Release Notes选项是最新版本的更新信息。
图1-1 OpenCV 4.0版本安装包下载区域
下载完成后得到“opencv-4.1.0-vc14_vc15.exe”文件,便可以开始安装过程。其实所谓的安装是一个解压的过程,可执行文件是一个自解压的程序,双击后便会提示我们选择解压路径。这里根据自己需求选择路径即可,特别要说明的是,该程序会将所有文件解压在opencv的文件夹下,因此不需要在选择解压路径中单独新建一个opencv文件夹。由于笔者电脑安装了多个版本的OpenCV,为避免混淆,单独创建一个名为opencv4的文件夹,解压到H:\opencv4。选择好路径后点击【Extract】按钮,便可以等待解压过程的结束。整个OpenCV4的大小约为1G,根据电脑的性能不同,等待时间从几十秒到几分钟不等。安装过程图片如图1-2和图1-3所示。
图1-2 选择提取OpenCV路径
图1-3 等待解压过程
解压结束后,去刚才选择的路径下查看是否多了一个名为opencv的文件夹,该文件夹内含有build和sources两个子文件夹,如果没有,说明解压错误,建议删除后重新解压。build文件夹是主要的OpenCV相关文件,里面含有头文件与库文件等重要信息,接下来的环境配置工作都将围绕其展开。sources文件夹里放置的是源码以及例程和图片,后续也会对其中的部分进行介绍。如果想减少占用硬盘空间,原则上可以删除sources文件夹,但是这里并不推荐大家这样做,毕竟大多数情况下我们计算机的硬盘空间是充足的。配置环境主要目的是告诉你的计算机你安装的OpenCV放在哪里,以及告诉你的IDE应该去哪里寻找头文件与库文件。为了完成与IDE的沟通,我们首先启动Visual Studio 2015,创建一个新的项目。在弹出的新项目选项中,查看自己已安装的Visual Studio内容,选择Visual C++中的Win32选项,在Win32项目和Win32控制台应用程序中选择后者。根据我们需求修改项目名称,选择存放的位置。为了测试OpenCV,我们将项目名称修改为opencv4_test,存放在F:\opencv\内,如图1-4所示。
图1-4 创建Win32控制台应用程序界面
完成项目名称填写后,点击【确定】按钮,会跳转出Win32应用向导,这里需要修改“附加选项”:选择“空项目”,取消“安全开发生命周期(SDL)检查”选项,点击【完成】按钮,完成空项目的创建。如图1-5所示
图1-5 应用程序向导
完成创建后,可以在界面的右侧发现“解决方案资源管理器”,打开opencv4_test项目左边的小三角,可以看到“外部依赖项”、“头文件”、“源文件”以及“资源文件”等四个文件夹,如图1-6所示。接下来我们需要在“源文件”里添加项目cpp文件用于编写程序,首先右键【源文件】选择【新建项】,在弹出的页面内选择“C++文件(.cpp)”并修改文件名称,这里我们将其命名为main文件,点击【添加】完成空白源文件的创建,如图1-7所示。
图1-6 空项目的解决方案资源管理器
图1-7 向“源文件”中添加空白cpp文件
然后修改界面上方的“Debug”模式,将其修改为“x64”模式,如图1-8所示。
图1-8 修改Debug模式为x64
在完成空项目的创建之后,正式开始包含路径的配置。依次点击界面上方的【视图】→【其他窗口】→【属性管理器】,在右侧会出现“属性管理器”界面,如图1-9所示。打开“Debug | x64”前方的小三角形,双击【Microsoft.Cpp.x64.user】打开属性页,如图1-10所示。
图1-9 属性管理器界面
图1-10 属性页
属性页中的“VC++目录”中的“包含目录”、“库目录”和“链接器”中的“附加依赖项”便是我们需要修改的地方。在“包含目录”里添加两个文件路径,分别是:
重点需要留意一下,这里不同于之前版本,这里包含目录里只有两个,取消了原来的…\inclde\opencv这个路径,是因为在…\include\这个文件夹里只有一个opencv2文件夹,OpenCV 4.1将两个文件夹合并在了一起。添加完成两个路径后,便完成了包含路径配置工作。
库目录配置过程与包含路径配置过程相似,只需要寻找到对应的目录路径即可。笔者的配置路径如为:
H:\opencv4\opencv\build\x64\vc14\lib
需要说明的是,“…\vc14\”指的是在Visual Studio 2015中使用,而如果使用的是Visual Studio 2017版本,就需要选择“…\vc15\”。这里如果选择错误,就会造成版本不兼容的问题,会出现配置失败的一系列问题。所以读者一定要根据自己的实际情况而选择。链接器的配置应该是OpenCV 4.1最大的改变,为了极大的方便开发者使用,节省配置时间,它简化了库文件中的lib文件数目。打开库目录路径,发现lib文件数目只有两个,如图1-11所示。这两个文件的名字很像,唯一区别就是一个后面含有“d”,而另一个没有。不含有的文件是在Release模式下使用,配置该模式的时候才使用。含有“d”的文件是在Debug模式下使用的,由于我们现在是在Debug模式下,因此我们选择此文件。打开链接器左侧的三角形,在“输入”项中的“附加依赖项”添加opencv_world410d.lib,完成链接器的配置。
图1-11 库文件中的lib文件
我们完成了告诉Visual Studio 2015去哪里寻找OpenCV的工作,接下来该告诉计算机OpenCV在哪里。找到“我的电脑”,右键选择【属性】,打开电脑的系统设置界面,并选择【高级系统设置】,进入系统属性界面。如图1-12所示。
图1-12 系统设置界面
在系统属性界面内选择【环境变量】,并在新跳转出的页面中的“系统变量”部分找到“Path”变量,如图1-13所示,在其后面添加如下路径:
H:\opencv4\opencv\build\x64\vc14\bin
这里要注意,我们会在用户变量和系统变量里都会发现“Path”变量。理论上两者只需要配置一个就可以完成,但是一台计算机上可能拥有多个用户,因此建议在系统变量里添加路径。同时,由于可能前期配置过其他的变量,在添加OpenCV变量的同时,不要将之前的配置内容是删除,而是使用分号将不同的路径分开,避免对其他环境产生影响。
图1-13 系统环境变量配置界面
完成了所有的配置过程后,需要通过程序验证配置是否成功。但是在此之前需要说明的是,配置流程没有顺序要求,即可以先完成Visual Studio的配置工作再完成计算机环境变量的配置,也可以反过来进行。不过需要说明的是,按照本书的流程进行配置,在配置完成后需要重启Visual Studio才可以在程序中加载OpenCV的头文件。我们在前面创建的main源文件中输入代码清单1-1中的程序,该程序的主要目的是读取一张图片并显示该图片,代码原理我们会在后面的章节中详细介绍。现在只需要将代码输入,构建解决方案,运行程序验证环境配置是否成功。代码清单1-1 install_test.cpp测试OpenCV 4.1是否安装成功
1. #include <opencv2\opencv.hpp> //加载OpenCV 4.1头文件
2. #include <iostream>
3.
4. using namespace std;
5. using namespace cv; //opencv的命名空间
6.
7. int main()
8. {
9. Mat img; //声明一个保存图像的类
10. img = imread("G:/opencv/lena.png"); //读取图像,根据图片所在位置填写路径即可
11. if (img.empty()) //判断图像文件是否存在
12. {
13. cout << "请确认图像文件名称是否正确" << endl;
14. return -1;
15. }
16. imshow("test", img); //显示图像
17. waitKey(0); //等待键盘输入
18. return 0; //程序结束
19. }
运行如上程序,我们得到如图1-14的结果,证明OpenCV环境配置成功,可以开启OpenCV的学习之路了。
图1-14 测试程序运行结果
经过几个月的努力,市面上第一本OpenCV 4入门书籍《从零学习OpenCV 4》将于今年12月左右由人民邮电出版社发行。如果小伙伴觉得内容有帮助,希望到时候多多支持!