《嵌入式系统开发技术》设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌入式系统开发技术

设计报告

组长:

成员:

中国石油大学(华东)计算机与通信工程学院计算机科学系

二0 年12 月

一、引言

OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列C 函数和少量C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。它的应用领域非常广泛,包括人机互动、物体识别、图像分割、人脸识别、机器视觉、汽车安全驾驶等。随着手机性能的不断提高,OpenCV往安卓上移植已经成为可能,安卓设备移植上OpenCV之后将能够进行复杂的图像处理和视频分析工作,人们不必拘泥于使用固定的设备进行图像以及视频的处理,从而增加了处理的灵活性。

本课程设计实现的就是OpenCV到安卓的移植以及在安卓上实现一个简单的图像处理应用。Android应用程序是通过Android SDK(Software Development Kit)利用Java编程语言进行开发,同时也可以通过JNI调用C动态库,不过这种开发方式存在技术障碍,伴随着Android NDK(Native Development Kit)的问世,使得“JA V A+C”的开发方式走向成熟。

二、总体设计

1、功能描述

本课程设计分为以下四个模块,各模块功能介绍如下:

Android-OpenCV项目:

OpenCV中大部分重要API在该项目中已经封装成了JA V A接口,为安卓上的OpenCV开发提供C、C++函数支持。

Android NDK:

它包括从C / C++生成原生代码库所需要的工具和build files,能够将一致的原生库嵌入可以在Android设备上部署的应用程序包文件(application packages files ,即.apk文件)中,支持所有未来Android平台的一些列原生系统头文件和库。在本课程设计中担任重要角色,包括交叉编译OpenCV源代码、编译测试程序等。

Cygwin:

Windows下模拟Linux操作环境,在其中执行NDK编译。

Eclipse:

Android开发环境,开发android程序,生成可执行的.apk文件,连接真机或虚拟机进行调试。

2、设计特色

本课程设计的特色在于成功的将android-opencv移植到eclipse开发环境中去,实现了在android设备开发图像处理、视频分析应用,提高了android设备的使用价值。编译环境采用Android NDK+Cygwin,方便开发者在windows环境下开发“java+c”程序。

3、体系结构

C代码开发环境:

Java代码开发环境:

三、详细设计

1、Android NDK开发环境搭建

(1)、NDK下载

本课程设计使用的NDK版本是android-ndk-r4-crystax,这是一款面向android的编译工具,下载后解压,存放位置自己定义,我放在G盘根目录下。

(2)、Cygwin下载

由于NDK编译代码时必须要用到make和gcc,所以必须搭建一个Linux环境,下载Cygwin,安装时要注意一下几点:安装目录最好不要放在有中文和空格的目录里;在选择需要下载的包时,由于不清楚各个包的用途,为了避免出错,所以选择了全部下载;由于是从国外站点下载资源,速度稍微有些慢,大约1~2个小时,期间应确保网络通畅。安装后在系统环境变量Path中加入cygwin的bin和

android-ndk-r4-crystax的路径,检测是否安装成功,打开Cygwin Terminal,在命令行输入“cygcheck -c cygwin”,会打印出当前cygwin的版本和运行状态,显示status是“OK”,则表示安装成功,否则需要重新安装。下面需要配置NDK环境变量,配置文件为.bash_profile,我的文件目录是

D:\cygwin\home\zhangyu\.bash_profile,在文件末尾添加“NDK=/cygdrive/< 你的盘符>/”,为了区分该NDK版本,我写的是:ndk_r4=/cygdrive/g/android-ndk-r4-crystax export ndk_r4,“ndk_r4”这个名字是自己定义的,方便记忆。保存后,关闭终端,重启,

终端,可能会出现一下错误:

导致这个错误的原因是使用了windows环境下的编辑环境,在Linux下存在不兼容的问题,在该文件目录下输入“dos2unix .bash_profile”,以Unix标准规范该文件即可消除错误。输入“cd $ndk_r4”,如果跳到该目录下,则表明ndk环境变量配置成功。

下面对NDK所带的一个例子进行编译,如下图所示:

编译后生成libhello-jni.so文件,将该工程导入eclipse,编译运行,结果如下:

至此,Android NDK开发环境搭建完毕。

2、Android-OpenCV移植

移植方法参照CSDN的一篇博文,下载Android-OpenCV源码包,存放到G盘根目录

下,该源码包已经写好了交叉编译Opencv的Makefile文件和Opencv的Android Library Project,用于本课程设计,需要修改以下几个地方:

(1)build.sh文件

将“ndk-build”替换为“cygdrive/g/android-ndk-r4-crystax/ndk-build ”,用于明确所使用的ndk-build的具体路径。

(2)clean.sh文件

同上。

将android-ndk-r4-crystax整个文件夹拷贝到D:\cygwin\home\zhangyu下,因为在opencv源码包中的local.env文件中指定的ANDROID_NDK_ROOT=$(HOME)/android-ndk-r4-crystax。或者在此处更改NDK目录,总之目的就是正确的找到NDK工具所在目录。

下面编译Opencv,打开Cygwin终端,进入opencv目录,运行build.sh,编译大约持续30分钟,编译成功后,在android/libs/armeabi和armeabi-v7a两个文件夹下生成libandroid-opencv.so文件,用于Android开发的opencv 库文件生成成功。

打开eclipse,将android文件夹下的工程导入到eclipse工作空间中,导入后运行该工程,在虚拟机上无任何反应,eclipse控制台输出如下信息:

相关文档
最新文档