《Arduino计算机视觉编程》一2.2 OpenCV的安装-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《Arduino计算机视觉编程》一2.2 OpenCV的安装

简介:

####本节书摘来自华章出版社《Arduino计算机视觉编程》一书中的第2章,第2.2节,作者[土耳其] 欧森·奥兹卡亚(zen zkaya),吉拉伊·伊利茨(Giray Yilliki),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.2 OpenCV的安装

本节将介绍在Windows、Linux、Mac OS、iOS和Android上安装OpenCV。OpenCV库的新版本会定期发布。本书采用了OpenCV的稳定版本2.4.10版。因为OpenCV成熟且稳定,未来版本的安装应该区别不大。

2.2.1 在Linux上安装OpenCV

我们从Linux的安装过程开始。Linux不仅可以运行在笔记本电脑和工作站上,在诸如树莓派和BeagleBone Black等嵌入式平台上也非常受欢迎。你可以根据我们要讲述的步骤安装和运行OpenCV。我们选用的Linux版本是Ubuntu 12.04 LTS。在安装OpenCV之前(特别是在嵌入式平台上安装时)需要检查是否满足以下必要条件:
磁盘空间:2GB是最低要求。你需要更多的空闲空间来存储相关的学习材料。
内存:256MB(最低);1GB(推荐)。

2.2.1.1 安装和配置包

我们将安装OpenCV 2.4.10版。你可以从http://opencv.org/downloads.html下载这个版本。现在让我们跟随以下步骤来准备安装环境:
1.?访问http://opencv.org/downloads.html,向下滑找到版本2.4.10,然后单击“OpenCV for Linux/Mac”。
2.?解压缩包到你的桌面上,其他地方也可以,你只要记住解压缩以后的位置就可以了。
3.?按Ctrl + Alt + T组合键打开终端,输入以下指令来安装OpenCV的依赖项:


9bb468462e0cf35a8ae2aa44cda9373bc9b668ea

4.?按Ctrl + Alt + T组合键打开终端,然后导航到放安装包的目录,输入如下指令进行安装:


bc1d5d4faf7305533e8417cd78b40442452d999c

5.?创建build文件夹然后在文件夹中创建make文件:


3114283d7d309fd9b8d042dc6e552f93e52bed7d

6.?运行下面的命令进行版本安装:


d44c17e77ecea0fdaa281f492751ab4ce195c526

你现在应该能够在终端窗口上看到安装进度。
7.?配置OpenCV,用如下命令打开opencv.conf文件:

77860a0d5a4e03b1b2eec411e9b2cc14e33ecf86

8.?在文件末尾加上如下这些行(它可能是一个空文件,这没关系),然后保存它:


9ec5ed73799d3b485b6035af7da8b79bd9860f20

9.?运行如下的代码来配置库:


af04bf022e465d0e3a2f358bcc4e8541ea0f2b6c

10.?现在打开另外一个文件:


8b706bb76ee47219efa950357eb5a192e53ebc2a

11.?在新打开文件的末尾加上如下一行,以便操作系统能够找到OpenCV,然后保存:


9791972ab458b125815ca5af3f23b88d7b7ea4f8

12.?最后,重启计算机。如果你不重启计算机,OpenCV可能无法正常工作。

2.2.1.2 用Eclipse CDT开发OpenCV

Eclipse是一个跨平台的集成开发环境(IDE)。相比较简单的文本编辑器,用集成开发环境编写代码更加方便和有效。我们将使用Eclipse,因为它是免费、适合面向对象编码,并且深受程序员喜爱。使用Eclipse的另一个好处是当代码有错误的时候,它会向我们发出警告!这个功能在我们使用新库进行开发的时候非常有用。本书的例子是采用C/C++编写的。出于这个原因,我们推荐Eclipse CDT作为开发环境。
安装Eclipse CDT
让我们开始在你的工作站上安装Eclipse(只需要安装针对C/C++的CDT插件)。要执行下面的步骤:
1.?下载面向C/C++开发人员的Eclipse IDE。根据你的工作站选择对应的连接。
2.?启动可执行文件。
3.?按照屏幕上的指示来安装Eclipse。
为了创建一个项目,需要执行以下步骤:
1.?启动Eclipse,在Eclipse文件夹里面运行可执行文件。
2.?在菜单项中依次找到File | New | C/C++ Project | C++ Project,然后单击Next。
3.?为项目选择一个名称(例如OpenCV_Template)。项目模板应该选择Empty Project,另外选中Linux GCC。
4.?其他地方都保留默认值,然后单击Finish。
5.?项目应该出现在项目导航器中(在左边的窗口)。
6.?新建一个source文件来存放OpenCV代码。
7.?在OpenCV_Template项目上单击鼠标右键,然后选择New | Folder。
8.?按惯例将这个文件夹命名为src,然后单击Finish。
9.?右键单击新创建的src文件夹,选择New source f?ile。将新文件命名为main.cpp,然后单击Finish。
10.?现在你有了一个项目,这个项目有一个空的cpp文件。让我们把下面这段代码复制到这个空的cpp文件:


23e0c80c429d858273865c667a972a760ca5f73a

在讲解其他内容之前先简单解释下源代码。代码的头两行为:


b8265ba594ac6034401493f168264500ba5b07ed

第一行告诉编译器到哪去找和OpenCV相关的必要函数。文件opencv.hpp表明了OpenCV模块的地址。
第二行告诉编辑器,代码使用的名字空间。
下面是代码主体:


ebcf74fb081739b53e844179a2ab2f75ec53177f

在第一行中,VideoCapture对象被创建出来从内建的或者外部连接的网络相机中捕获一个视频流。
if(!cap.isOpened())表达式用来检查创建出来的对象是否被成功打开。
用namedWindow函数创建一个用来展示被捕获的视频流的窗口,名字是frame,大小参数是CV_WINDOW_AUTOSIZE。
如果一切顺利,你就会看到捕获的网络相机帧会被显示出来。以下是循环体:


3cf93d3e18a6657f96b8cbcadb114b3c27622a22

在按键没有按下时,这段代码先运行for(;;)循环来显示被捕获的图像。捕获的图像被加载到frameIn中,并通过调用imshow函数在nameWindow中展示。
我们还要告诉OpenCV它的头文件和库在哪,具体步骤如下:
1.?打开Project | Properties,然后执行如下步骤:
1)在C/C++ Build中单击Settings | Tool Settings选项卡。我们将在这里输入头文件和库文件信息。
2)在GCC C++ Compiler中,单击Includes。在Include paths(-l)中需要包括OpenCV的安装路径,在我们的例子中,是/usr/local/include/opencv。
3)现在打开GCC C++ Linker,在这里有两个地方要填:
首先,在Library search path (-L)中,你必须填上OpenCV库所在的地址:/usr/local/lib;
然后在Libraries(-l)中添加我们可能需要的库,包括:


4968faea9f118aeb7dde6a432884b83d7874dfb2

如果你不知道你的库在哪,在终端上输入下面的指令:


2cdf4929d0f23006a95fa740f95481cf7beacb9e

来看下你的OpenCV库的地址。
输出应该和下面这段比较相似:


07d1e9276de8efd30250c787c81d248a6bc32f34

2.?现在你已经全部完成了,点击OK。
你的项目现在已经准备好进行构建了。在控制台中打开Project | Build all。现在一切就绪了!

2.2.2 在Mac OS上安装OpenCV

如果你在阅读本节,说明你是Mac开发人员!苹果公司建立了一个很棒的开发环境!Xcode是免费的并且在Mac OS上运行得非常流畅。让我们先下载Xcode吧!你可以从Mac的苹果商店下载Xcode,或者通过网址https://developer.apple.com/xcode/downloads/下载。

2.2.2.1 得到命令行工具

同时按下空格键和cmd键来打开Spotlight Search窗口。然后,在窗口中输入terminal来打开它。在里面输入如下指令:


e335b3a402346ab379be82adecbe5db9a70ee514

2.2.2.2 安装HomeBrew

HomeBrew可用来帮助安装OpenCV。在命令行中输入下面的安装脚本来下载HomeBrew:

执行下面的命令来更新升级。确保使用最新的HomeBrew:


c4ca8375f0ea0383814ca3dd76dab200e4df4fff

一旦安装好HomeBrew,就把homebrew/science这个路径加进来,具体代码如下:


12ca5323cd3b504616c3304cee161c57e36d7ef8

让我们输入下面这行代码开始安装:


7c0d4a8d9749f62dd1c780a2e531dbe4f1df1dd7

你已经完成安装了!可以在下面的位置找到OpenCV。输入如下指令:


b2971cc9f0edf1a18613ac1b22ce24cc46922e3d

为了确保OpenCV已经链接到Xcode,输入如下指令:


f26cef23f5d284a6d889304c31fd817aa59f5126

确认之后,我们把其他需要的库链接到Xcode。

2.2.2.3 在Xcode中使用OpenCV

为了使用OpenCV库,你需要创建一个C++项目,然后告诉Xcode去哪里找OpenCV库。
1.?在菜单里面选择Xcode |File|Project…|OS X|Application|Command Line Tool来创建一个命令行工具,然后单击Next。
2.?将项目命名为OpenCV_Template。选择Language为C++,并单击Next。
3.?选择项目的存储路径然后单击Finish。
4.?在窗口中单击Xcode的项目文件。在页面顶部会看到三个选项卡:Build Settings(构建设置)、Build Phases(构建阶段)和Build Rules(构建规则)。
5.?单击Build Settings,找到Search Paths(搜索路径)。双击Header Search Paths(标题的搜索路径)选项,然后单击加号来添加一个新的路径,路径是/usr/local/include。
6.?接下来双击Library Search Paths(库搜索路径)选项,然后单击加号。添加/usr/local/lib。
作为最后一步,我们需要按以下步骤给Xcode加入OpenCV的二进制库:
1.?OpenCV的二进制库要加到项目中来。为此,你需要去Build Phases(构建阶段)设置。
2.?单击Link Binary With Libraries | Add Other…。
3.?单击加号来添加库。先按Shift + cmd + g组合键,然后找到/usr/local/lib。
4.?选中libopencv_*.dylib加到项目中来。
现在是时候来测试我们用Xcode开发的第一个OpenCV项目了!
你可以运行你的测试代码了。因为是用Eclipse CDT开发的,所以把测试代码复制到main.cpp文件。

2.2.3 在Windows上安装OpenCV

Windows是一种常见的操作系统,大量的OpenCV用户在使用它。本节将介绍OpenCV在Windows上的安装过程。这个过程对于任意的Windows版本都应适用,因为链接OpenCV的过程都是类似的。当前的配置是64位Windows 8和OpenCV 2.4.10。简单来说,就是告诉Windows到哪去找OpenCV,这样当需要OpenCV的时候Windows能够找到它。
通过以下步骤安装构建前的库:
1.?用浏览器打开网页opencv.org,然后单击OpenCV for Windows链接。
2.?下载opencv-2.4.10.exe之后,运行OpenCV for Windows.exe文件。
3.?解压缩文件到C:/。
你需要通过添加路径来把需要的库添加到项目中来。
1.?打开Control Panel | System | Advanced system settings | Advanced | Environment variables | System variables。
2.?在System variables(系统变量)里,向下滚动直到找到Path(路径),选择它并单击Edit。
3.?在Edit System Variable(编辑系统变量)窗口的最后添加;C:opencvbuildx64vc12bin;。最后,单击OK。
在添加;C:opencvbuildx64vc12bin;的时候请小心不要删除其他变量。分号是用来区分变量值的,请确认使用了分号。
最好重启电脑来确保系统识别了新的环境路径变量。如果一切顺利,你就可以开始创建一个新的OpenCV项目了。
安装MS Visual Studio 2013
访问https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx下载MS Visual Studio 2013,然后进行安装。
1.?安装以后,选择File | New | Project… | Visual C++ Win32 | Win32 Console Application。给你的项目起个名字。不妨把名字设为OpenCV_Template。然后设置项目位置,比如C:OpenCV_Projects。最后,单击OK。
2.?在Win32应用程序向导窗口中,单击Next,然后在Additional options中选中Empty Project,并单击Finish。
3.?右键单击项目OpenCV_Template,然后单击Properties(属性)。
4.?选择C/C++ | General | Additional Include Directories |,然后单击来添加路径:


046d87382e76cca0d9d628a5362f6c3c02d3b276

5.?选择Linker | General | Additional Include Directories |,然后单击来添加路径:


f6dbfe5b25d851cefcffb0cae7b25ca4a177b0ed

6.?选择Linker | Input | Additional Dependencies |,然后单击来添加给定的库:


d5bea54932238c0aa97d9b930abd7ccf38c81d70

用d做前缀的文件是用作测试目的的库。另外一个要注意的事情是库的版本号要和你安装的版本号相同。也就是说,如果你安装的是OpenCV 2.4.9,库的名字应该类似于opencv_core249d.lib。
现在你可以继续了。
7.?在OpenCV_Template项目中右键单击Source,依次选择Files | New Item… | Visual C++ | C++ File,然后将新文件命名为main.cpp。
8.?最后,复制和粘贴给定的代码。

2.2.4 在iOS上安装OpenCV

诸如iPhone和iPad等设备在开发者社区非常受欢迎。提供一个能够处理图像的应用是向朋友展现能力的好机会。想象一下你用iPhone控制你的寻线机器人。你的iPhone通过蓝牙给机器人发送指令来寻线!我们几乎已经准备就绪,可以开始开发iOS上的程序了。为了可以在真正的设备上运行你的应用,你需要注册一个苹果开发者账号并给iOS开发计划支付费用(每年99美元)。如果不想支付这个费用,你可以一直使用模拟器来运行你的应用。
现在即将开始第一个OpenCV iOS项目。首先确保Xcode正确安装。你可以参考2.2.2节。
1.?创建一个新的Xcode项目,命名为OpenCV_iOS_Template。
2.?从http://sourceforge.net/projects/opencvlibrary/f?iles/opencv-ios/3.0.0-beta/opencv2.framework.zip/download下载opencv2.framework并解压。
3.?你需要在Xcode中加上对opencv2.framework的链接。在左边窗口选择项目浏览器然后单击项目名字。
4.?依次单击Build Phases | Link Binary With Libraries然后单击plus (+)来添加opencv2.framework。你也可以直接拖动opencv2.framework。
5.?最后,右键单击你的项目,然后选择New File… | PCH File,把下面这段代码加入到新建的OpenCV_iOS_Template.pch文件中。


8f69dd034e392ea4fafece0329008b812a22e572

现在你可以专心开发你的iOS项目了!

2.2.5 在Android上安装OpenCV

想象一下可以把Android手机变成一个可以用于机器人项目的实时图像处理平台。Android是一个强大的平台,拥有很多可以启用视觉应用程序的功能。让我们开始打造一个可以运行计算机视觉程序的移动应用!你可以把Android手机放在机器人的头部让它作为机器人的眼睛。我们将在本节中设置需要的环境。为了创建Android的OpenCV应用,需要安装一些先决条件。为达到这个目的需要遵循如下步骤。

2.2.5.1 安装OpenCV4Android

你可以从http://sourceforge.net/projects/opencvlibrary/f?iles/opencv-android/下载OpenCV4Android包,最新的版本是OpenCV-2.4.11-android-sdk.zip。
与在Window上一样,下一步是提取SDK到C:opencv4android。你可以使用任意的解压软件,比如Winrar。在Linux上,你可以使用如下指令来解压缩:


7dec6c77a615a0e1a11c45c0b04968cda4575873

Android目前的开发环境是Android Studio。但是OpenCV4Android SDK并不直接支持Android Studio。对于Android开发者来说使用Eclipse与ADT(Android开发者工具包)环境,比较容易使用OpenCV4Android这个SDK。所以在本书中Eclipse是首选。
可以使用C++ API来开发运行在Android上的OpenCV应用程序。要做到这一点,你需要安装https://developer.android.com/tools/sdk/ndk/index.html上的Android原生开发工具包(NDK)。

2.2.5.2 Eclipse集成

通过安装Eclipse ADT包,Eclipse已经准备好开发Android程序了。你可以从地址https://dl.google.com/android/adt/adt-bundle-windows-x86_64-20140702.zip下载。
教程在http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/O4A SDK.html。
按照如下步骤:
1.?启动Eclipse并选择工作区为C:opencv4android。
2.?Opencv4Android库已经准备好使用项目文件了。现在把OpenCV库和例子导入到工作区。右键单击Package Explorer窗口,然后在弹出菜单中选择Import...选项,如下图所示:


f22e5c01eefb24eaa81f5bef597eaf534e26f3c3

3.?在主面板中,依次选择General | Existing Projects into Workspace,然后单击Next按钮。
4.?选择C:opencv4android目录为根目录,所有项目都被列出,然后单击Finish。
如果是在非Windows操作系统(Linux和Mac OS)上,引入这些文件以后,Eclipse如果是运行原生C++代码,仍然会有构建错误。为了解决这些错误,请执行以下操作:
打开Project Properties | C/C++ Build,用${NDKROOT}/ndk-build代替Build command里面的文本(去掉结尾的.cmd)。
5.?一旦Eclipse完成构建,你的工作区将没有任何构建错误,如下图所示:


833d6fc898d4e9c999724acb6b597ed462bffd05

2.2.5.3 运行例子

在运行例子之前,去Google Play里面安装OpenCV Manager和OCV 2.4 pack armeabi-v7a应用。OCV 2.4 pack armeabi-v7a是一个与硬件相关的二进制应用,但是它能在绝大多数Android设备上顺利工作。在一些老一点的设备上可以按照下面的提示安装合适的APK文件。
为了找到合适的二进制版本,你可以访问链接http://docs.opencv.org/platforms/android/service/doc/UseCases.html#manager-selection来获取更多信息。
将Android设备连接到你的电脑上,并确保启动USB debugging选项。然后在Eclipse中,右击OpenCV Tutorial-Camera预览应用程序并单击Run。第一次这么做时,会弹出一个提示框。然后选择Android Application,将会弹出一个选择设备界面。选择你的设备并保持冷静。OpenCV的应用程序将运行在你的Android设备上!
OpenCV4Android SDK是和OpenCV Java API配套使用的。你可以看到它的代码非常类似于C++ API。Java API文档可以在http://docs.opencv.org/java上找到。
OpenCV有庞大的社区和支持网络。如有需要,你可以在http://opencv.org/support.html寻找帮助。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接