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

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的依赖项:

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

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

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

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

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

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

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

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

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文件:

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

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

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

在按键没有按下时,这段代码先运行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)中添加我们可能需要的库,包括:

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

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

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来打开它。在里面输入如下指令:

2.2.2.2 安装HomeBrew

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

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

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

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

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

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

确认之后,我们把其他需要的库链接到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 |,然后单击来添加路径:

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

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

用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文件中。

现在你可以专心开发你的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上,你可以使用如下指令来解压缩:

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...选项,如下图所示:

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完成构建,你的工作区将没有任何构建错误,如下图所示:

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寻找帮助。

时间: 2024-07-29 23:34:01

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

《Arduino计算机视觉编程》一第2章 OpenCV的基础与安装2.1 OpenCV的基础

本节书摘来自华章出版社<Arduino计算机视觉编程>一书中的第2章,第2.1节,作者[土耳其] 欧森·奥兹卡亚(zen zkaya),吉拉伊·伊利茨(Giray Yilliki),更多章节内容可以访问"华章计算机"公众号查看. 第2章 OpenCV的基础与安装 开源计算机视觉库(OpenCV)是一个供学术研究人员.商业公司.嵌入式设备开发社区以及全世界爱好者使用的计算机视觉库.OpenCV提供了C++.C.Python和Java等语言版本的接口,并且支持Windows.L

《Arduino计算机视觉编程》一第3章 用OpenCV和Arduino进行数据采集3.1 图像和视频采集

本节书摘来自华章出版社<Arduino计算机视觉编程>一书中的第3章,第3.1节,作者[土耳其] 欧森·奥兹卡亚(zen zkaya),吉拉伊·伊利茨(Giray Yilliki),更多章节内容可以访问"华章计算机"公众号查看. 第3章 用OpenCV和Arduino进行数据采集 在本章中,你将了解计算机视觉系统的数据采集部分.相机和传感器的数据都会被处理.本章将讲授如何给视觉系统选择相机和传感器以及如何正确使用它们.因此,本章有两个主要部分:一个部分是关于用OpenCV进

《Arduino计算机视觉编程》一2.3 总结

本节书摘来自华章出版社<Arduino计算机视觉编程>一书中的第2章,第2.3节,作者[土耳其] 欧森·奥兹卡亚(zen zkaya),吉拉伊·伊利茨(Giray Yilliki),更多章节内容可以访问"华章计算机"公众号查看. 2.3 总结 在本章中,你了解了OpenCV的基础知识,以及如何在你的设备上安装它.你还了解了如何在不同的平台和开发环境上配置你的OpenCV项目.安装OpenCV之后,运行了第一个OpenCV应用程序!OpenCV对平台独立性的支持非常好.我们强

《Arduino计算机视觉编程》一3.3 总结

本节书摘来自华章出版社<Arduino计算机视觉编程>一书中的第3章,第3.3节,作者[土耳其] 欧森·奥兹卡亚(zen zkaya),吉拉伊·伊利茨(Giray Yilliki),更多章节内容可以访问"华章计算机"公众号查看. 3.3 总结 现在我们知道了怎么在计算机视觉项目中进行数据采集,也知道了如何给一个特定的计算机视觉应用选择相机,还知道如何使用OpenCV针对不同的需求进行数据采集.读完本章之后,你还知道了如何读取.使用传感器数据以及如何对传感器数据进行过滤.这些

《Arduino计算机视觉编程》一1.3 总结

本节书摘来自华章出版社<Arduino计算机视觉编程>一书中的第1章,第1.3节,作者[土耳其] 欧森·奥兹卡亚(zen zkaya),吉拉伊·伊利茨(Giray Yilliki),更多章节内容可以访问"华章计算机"公众号查看. 1.3 总结 我们现在知道如何处理计算机视觉项目以及如何把项目分解成一个个独立的部分以便更加容易地实现整个项目.我们对如何用系统性的方法来实现视觉系统的复杂任务也有了一些概念.我们还谈到了方法中每一个子步骤的原因和重要性.我们现在知道了解决问题有哪

《Arduino计算机视觉编程》一导读

前 言 Preface 特别是对于现代机器而言,计算机视觉是环境感知发展的下一个阶段.许多现代设备尝试使用有限的资源来模仿人类的感知能力.此外,大多数此类仿制品其实是存在不足的,因为通常情况下它们不能直接模拟人类的感知能力,尤其是在视觉方面. 即使传统传感器的种类有很多,它们仍然无法表现出人类视觉系统的强大,这是人类最复杂的感知功能之一.因此,我们需要一定的视觉信息,使我们的电子系统更加智能化.这就是计算机视觉出现的原因. 相机可以被视为终极视觉传感器,它非常接近于人类的视觉感知系统.但是问题在

《Arduino计算机视觉编程》一1.2 解决计算机视觉问题

1.2 解决计算机视觉问题 解决任何复杂的问题,比如计算机视觉问题,非常重要的一点就是通过理解每一步的目的来把问题分解成简单和可实现的子步骤.本章的目的是向你展示如何解决计算机视觉问题,以及如何用一个通用模型来对问题建模. 本书讲解的实用计算机视觉系统的架构,由Arduino系统和OpenCV系统组合而成,如下图所示: Arduino只负责从环境中收集感官信息,比如温度.湿度,然后把这些信息发给视觉系统控制器的OpenCV系统.视觉系统控制器和Arduino之间的通信可以是有线的,也可以是无线的

VS与MATLAB混合编程在mfc中用opencv显示图像

问题描述 VS与MATLAB混合编程在mfc中用opencv显示图像 我想用vs与MATLAB混合编程实现图像可视化界面,编译好的MATLAB程序是shiyan,编译成功后要在vs中mfc用opencv显示图像,但是最终处理后的图像显示不出来,想请大家帮忙看下我的程序哪里出问题了?先谢谢大家了,还有我想问问,我输入的是灰度图也就是在cmat中是1通道,是不是应该跟MATLAB显示出来的数是一样的?怎么把图像矩阵再vs中显示出来呢?谢谢大家,谁知道希望帮帮我! if( !lvboInitializ

c++-Arduino C编程中free()函数挂机

问题描述 Arduino C编程中free()函数挂机 最近我在尝试写一个描述机器人比赛场地的代码时,在内存分配上遇到了挂机的问题.代码在Arduino提供的编译平台上全部通过,但是在实际运行时,往往无法跑完测试程序.经过测试发现代码在obstacle对象的构造函数中调用的segajouter(segment tmp)的free(void*ptr)函数中挂机.Arduino使用的是Uno 主题测试程序如下: #include ""ensemble.h"" #incl