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

嵌入式系统设计实验报告班级: 20090612学号: 2009112107姓名:侯金钟成绩:指导教师:武俊鹏、刘书勇1. 实验一1.1 实验名称嵌入式系统硬件开发环境1.2 实验目的1.熟悉UP-net3000实验平台。
2. 超级终端设置及BIOS 功能使用。
1.3 实验环境硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上、串口线。
软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序。
1.4 实验内容及要求熟悉UP-net3000实验平台的硬件电路和外设,ARM JTAG的安装和使用,利用超级终端检验外设的工作状态。
1.5 实验设计与实验步骤1.建立工程(1)运行ARM SDT 2.5 集成开发环境(ARM Project Manager).(2)在新建的工程中,如图1A-2 所示,选中工程树的“根部”。
(3)因为开发板上的嵌入式处理器ARM7TDMI 没有浮点处理器,所以,如图1A-3 所示,在弹出的对话框中设置Floating Point Processor 为none,并保持其他的设置不变。
(4)选中工程树的“根部”,通过菜单Project | Tool Configuration for work1.apj | asmlink| Set,对整个工程的连接方式进行设置。
(5)在弹出的对话框中,选中Entry and Base 标签,如图1A-4 所示,设置连接的Read-Only (只读)和Read-Write(读写)地址。
(6)选择Linker Configuration 的ImageLayout 标签,(7)选择Project | Edit Project Tamplete 菜单,弹出Project Template Editor 对话框。
嵌入式课程设计报告

调试工具
使用GDB等调试工具进行程序调试, 可实现断点设置、变量查看、堆栈跟
踪等功能。
版本控制工具
使用Git等版本控制工具进行代码管理 ,实现多人协作开发、版本回溯等功 能。
性能分析工具
使用Valgrind等性能分析工具进行程 序性能分析,可实现内存泄漏检测、 函数调用关系分析等功能。
课程设计总结与展望
总结本次课程设计的经验教训和收 获,展望嵌入式系统未来的发展趋 势和应用前景。
02
硬件平台选择与搭建
常见嵌入式硬件平台比较
ARM平台
高性能、低功耗,广泛应用于智能手机、 平板电脑等移动设备。
PowerPC平台
高性能、高可靠性,适用于工业控制、航 空航天等高端应用设备、 数字电视等领域。
07
总结与展望
本次课程设计收获总结
理论与实践结合
通过本次课程设计,深入理解了 嵌入式系统的基本原理,同时将 理论知识应用于实际项目中,实 现了理论与实践的有机结合。
技能提升
在课程设计过程中,掌握了嵌入 式系统开发的基本技能,包括硬 件设计、软件编程和调试技术等 。
团队合作
与团队成员紧密合作,共同完成 了课程设计的任务,提高了团队 协作和沟通能力。
05
系统实现过程与代码展示
关键模块代码实现技巧分享
模块化设计
将系统划分为多个独立的功能模块,每个模块具有明 确的接口和功能,便于代码的管理和复用。
高效算法选择
针对系统需求,选择合适的算法和数据结构,以提高 代码执行效率。
代码优化
通过减少冗余代码、提高代码可读性和可维护性,降 低系统资源消耗。
系统集成测试方法论述
嵌入式课程设计报告
嵌入式系统课程设计报告

嵌入式系统课程设计报告一、教学目标本课程的教学目标是使学生掌握嵌入式系统的基本概念、原理和设计方法,能够运用嵌入式系统进行实际项目的开发和实现。
具体来说,知识目标包括了解嵌入式系统的定义、特点、分类和应用领域;掌握嵌入式系统的硬件和软件组成及工作原理;熟悉嵌入式操作系统的基本概念和常用操作系统。
技能目标包括能够使用嵌入式系统开发工具和平台进行程序设计和调试;具备嵌入式系统硬件电路的设计和调试能力;能够运用嵌入式系统进行实际项目的开发和实现。
情感态度价值观目标包括培养学生的创新意识和团队合作精神,提高学生解决实际问题的能力和责任感。
二、教学内容根据课程目标,本课程的教学内容主要包括嵌入式系统的基本概念、原理和设计方法。
具体包括以下几个方面:1. 嵌入式系统的定义、特点、分类和应用领域;2. 嵌入式系统的硬件组成,如处理器、存储器、输入输出接口等;3. 嵌入式系统的软件组成,如固件、操作系统、应用程序等;4. 嵌入式操作系统的基本概念和常用操作系统;5. 嵌入式系统的设计方法和开发流程;6. 嵌入式系统硬件电路的设计和调试方法;7. 嵌入式系统在实际项目中的应用和案例分析。
三、教学方法为了实现课程目标,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
通过多样化的教学方法,激发学生的学习兴趣和主动性。
具体教学方法如下:1. 讲授法:通过讲解嵌入式系统的基本概念、原理和设计方法,使学生掌握相关知识;2. 讨论法:通过分组讨论和课堂讨论,培养学生的思考能力和团队合作精神;3. 案例分析法:通过分析实际项目案例,使学生了解嵌入式系统在实际中的应用和设计方法;4. 实验法:通过实验操作和调试,锻炼学生的动手能力和实际问题解决能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将选择和准备以下教学资源:1.教材:选用权威、实用的嵌入式系统教材,为学生提供系统的学习资料;2. 参考书:推荐学生阅读相关参考书籍,丰富学生的知识体系;3. 多媒体资料:制作课件、教案等多媒体教学资料,提高课堂教学效果;4. 实验设备:准备嵌入式系统开发板、仿真器等实验设备,为学生提供实践操作的机会。
嵌入式系统设计性实验报告

嵌入式系统设计性实验报告本次实验的目标是设计一个能够追踪并控制智能小车运动的嵌入式系统。
具体来说,我们需要设计一套硬件电路和相应的软件程序,使得小车能够通过传感器感知周围环境,并通过控制器控制电机的转动实现运动。
实验中使用了Arduino开发板作为嵌入式系统的核心。
Arduino开发板集成了一个微控制器和一系列输入输出接口,可以通过编写简单的代码控制各种外设。
在本次实验中,我们使用了超声波传感器作为感知器,直流电机作为执行器。
首先,我们需要连接硬件电路。
超声波传感器负责感知周围环境,通过发送超声波脉冲并接收回弹的信号来计算距离。
直流电机则负责控制小车的运动,根据软件的控制信号,控制电机的转速和方向。
在连接硬件电路时需要注意电路的正确连接,以免出现短路或其他损坏。
接下来,我们需要编写软件程序。
首先,我们需要初始化传感器和电机的接口,并设置合适的参数。
然后,在主循环中,我们不断地读取传感器的数值,并根据读取到的数值进行相应的处理。
比如,当距离超过一定阈值时,我们可以控制电机停止运动;当距离小于阈值时,我们可以控制电机朝一些方向运动。
除了距离的处理,我们还可以根据需要处理其他的传感器读数,比如温度、压力等。
最后,当实验结束时,我们需要关闭接口并释放相应的资源。
经过实验,我们成功地设计并实现了一个能够追踪并控制智能小车运动的嵌入式系统。
实验结果表明,我们的系统可以准确地感知周围环境,并根据环境的变化来控制小车的运动。
系统的性能良好,响应速度较快,可以在实际应用中发挥较好的作用。
总结而言,本次实验通过设计一个能够追踪并控制智能小车运动的嵌入式系统,使我们对嵌入式系统设计有了更深入的认识。
通过实验,我们熟悉了嵌入式系统的硬件电路和软件程序的设计过程,提高了对嵌入式系统设计的理解和实践能力。
此外,我们还深刻认识到嵌入式系统在实际应用中的广泛性和重要性。
希望通过今后进一步的学习和实践,能够在嵌入式系统设计领域取得更好的成绩。
嵌入式系统课程设计报告

NORTH CHINA UNIVERSITY OF SCIENCE AND TECHNOLOGY 嵌入式系统课程设计报告学生姓名:学号:学院:专业班级:指导教师:同组成员:2016年12 月26 日一、课程设计目的本课程设计是在《嵌入式系统原理与应用》课程的基础上,通过软件编程及仿真调试的实践,进一步掌握嵌入式系统的原理和应用方法,是毕业设计前的一次重要实践,为今后从事嵌入式系统相关工作岗位打下良好的基础。
二、设计题目及要求2.1 设计题目:基于STM32和uC/OS-II的多任务设计2.2 功能实现:使用uC/OS-II的任务管理函数和STM32库函数控制相应的寄存器,完成一个多任务设计。
整个设计共有4个任务,驱动一个LED指示灯闪烁、由3个LED指示灯组成的流水灯、驱动蜂鸣器和利用swd方式进行printf输出。
2.3 设计要求:理解和熟练使用KEIL软件、STM32寄存器、STM32库函数和uC/OS-II 任务管理函数,用KEIL软件完成编程和调试,下载到开发板中实现4个设定的任务,并完成课程设计报告。
四个任务分别为:(1)驱动1个LED指示灯闪烁、(2)由3个LED指示灯组成流水灯(3)驱动蜂鸣器发出响声。
(4)利用swd方式进行printf输出。
三、设计原理说明3.1 硬件说明本次课程设计主要使用的是STM32 神舟IV 号开发板为基础进行课程设计的,本节将详细介绍神舟IV号开发板的各部分硬件原理与实现。
(1)开发板资源图(2)MCU开发板的处理器是STM32F107VCT6,该处理器基于ARM V7 架构的Cortex-M3 内核,主频72Mhz,内部含有256K字节的FLASH 和64K字节的SRAM,LQFP100 封装。
(3)蜂鸣器开发板板载一个无源蜂鸣器,用于产品告警或声音提醒。
蜂鸣器连接到了处理器的PA3管脚,当处理器的PA3管脚输出低电平时蜂鸣器开始鸣响,反之处理器的PA3管脚输出高电平时蜂鸣器停止鸣响.(4)指示灯开发板提供了1个电源指示灯和4路通用LED指示灯。
嵌入式系统设计课设报告范本

嵌入式系统设计课设报告福州大学《嵌入式系统设计课设》报告书题目:基于28027的虚拟系统姓名:学号:学院:电气工程与自动化学院专业:电气工程与自动化年级:起讫日期:指导教师:目录1、课程设计目的 (1)2、课程设计题目和实现目标 (1)3、设计方案 (1)4、程序流程图 (1)5、程序代码 (1)6、调试总结 (1)7、设计心得体会 (1)8、参考文献 (1)1、课程设计目的《嵌入式系统设计课设》是与《嵌入式系统设计》课程相配套的实践教学环节。
《嵌入式系统设计》是一门实践性很强的专业基础课,经过课程设计,达到进一步理解嵌入式芯片的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。
培养大胆创造创造的设计理念,为今后就业打下良好的基础。
经过课程设计,掌握以下知识和技能:1.嵌入式应用系统的总体方案的设计;2.嵌入式应用系统的硬件设计;3.嵌入式应用系统的软件程序设计;4.嵌入式开发系统的应用和调试能力2、课程设计题目和实现目标课程设计题目:基于28027的虚拟系统任务要求:A、利用28027的片上温度传感器,检测当前温度;B、经过PWM过零中断作为温度检测A/D的触发,在PWM中断时完成温度采样和下一周期PWM占空比的修正;PWM频率为1K;C、利用按键作为温度给定;温度给定变化从10度到40度。
D、当检测温度超过给定时,PWM占空比增减小(减小幅度自己设定);当检测温度小于给定时,PWM占空比增大(增大幅度自己设定);E、把PWM输出接到捕获口,利用捕获口测量当前PWM的占空比;F、把E测量的PWM占空比经过串口通信发送给上位机;3、设计方案-----介绍系统实现方案和系统原理图①系统实现方案:任务A:利用ADC模块通道A5获取当前环境温度。
任务B:PWM过零触发ADC模块,在PWM中断服务函数中,将当前环境温度和按键设定温度进行比较,并按照任务D的要求修订PWM占空比。
嵌入式系统开发实验报告

计算机学院实验报告课程名称:嵌入式系统开发专业:软件工程班级:122002学号:2姓名:郑鑫2015年12 月19 日实验室名称:计算机实验室实验机器号:实验分组:无实验时间:2015年9月25日指导教师:时振涛实验一:Android 开发环境搭建及调试一、实验目的和要求1. 掌握Android环境搭建方法,创建第一个Android应用程序HelloWorld,熟练掌握设置环境参数2. 了解Android SDK的目录结构、Android应用程序的程序结构3. 创建一个AVD,设置Android模拟器,并会操作Android模拟器4. 使用命令行工具管理模拟器5. 熟悉Android的调试工具DDMS,掌握Logcat的使用方法。
二、实验原理:1. 利用电脑搭建安卓开发环境2. 设置Android模拟器3. 使用命令行工具管理模拟器4. 操作Android模拟器5. 使用运行(Run)模式运行三、实验设备:1. PC计算机2. JDK安装包3. Eclipse安装包4. Android SDK安装包5. ADT插件四、实验内容初步了解android project建立过程以及如何运行模拟器,对android的运行原理进行简单了解;1.搭建配置Eclipse+Android开发环境2.创建一个简单的”Helloworld”工程3.设置Android模拟器:创建新的模拟器4.用命令行工具执行如下操作实现文件操作和管理模拟器:●拷贝文件到手机内存:adb push 源文件 [/位置/目标文件]●拷贝手机文件到电脑上:adb pull [源文件] [目标文件]●修正:adb kill-server●重启:adb start-server●把电脑上某个应用(.apk)文件部署到模拟器或手机中:adb install 文件名.apk●卸载手机上的程序:adb uninstall [包名]●查看当前的targets:android list targets●创建一个AVD,要求:名字:Hphone目标平台:Android2.3.2 SD容量:100M位置:c:\test外观:WQVGAandroid create avd –target 1 –n Hphone –c 100M –p c:\test –s WQVGA●列表显示当前所有AVD:android list avd●运行刚刚建立的AVD:emulator –avd Hphone●删除一个已存在的模拟器:android delete avd –n Hphone5.使用运行(Run)模式运行:设置“Run Configuration…”选项6.练习操作DDMS工具五、实验步骤和方法1、下载JDK1.82、官方下载Eclipse,解压Eclipse3、官方下载Android SDK(工具)并解压4、运行SDK Manager.exe,下载需要的SDK版本和API5、设置Android环境变量Android_SDK_Home:安装路径增加自动搜索路径环境变量:%ANDROID_SDK_Home%\tools:%ANDROID_SDK_Home %\platform_tools:6、安装ADT过程:Help->install.newsoforms->add->……->next-> ……end。
嵌入式系统课程设计报告书

成绩学生课程实践能力考查题目:温度按键设定、显示、报警系统设计课程名称:嵌入式系统开发专业班级:学生学号: 学生姓名:考查地点: 考查时长: 4小时所属院部: 指导教师:2017 — 2018学年第 2 学期金陵科技学院教务2017-2018学年第2学期《嵌入式系统开发》实践能力考核任课教师签名:日期:温度按键设定、显示、报警系统设计要求:1、读取DS18B20温度,在液晶上实时显示,并显示上、下限,初始值上限32,下限26。
2、通过按键可以设置环境温度的上限与下限,WK_UP键按下调节上限,再按下调节下限,再按下调节上限……KEY1按下加1;KEY0按下减1,根据上限与下限判断当前温度有没有超出范围。
3、当温度超过上限,LED1隔1秒亮一次。
超过下限,LED2隔1秒亮一次。
(也可自定义报警方式)4、串口波特率一律用9600bps。
液晶显示的信息:STM32 testname: xxxxxxxxxMaximum is 32C,Minimum is 26 CThe temperature is 29 C,now!(xxxxx就是自己的名字拼音)目录:第一章.系统要求1、1设计要求1、2设计方案第二章.硬件设计2、1开发板原理图2、2 DS18B20模块2、3按键模块2、4 LCD显示模块2、5 LED 模块第三章.软件设计3、1程序流程图3、2程序部分代码3、2、1主函数、main、c3、2、2 LED 函数led、c3、2、3温度代码 s18b20、c3、2、4键盘代码key、c第四章、实物效果图第五章、课程总结第一章.设计要求及方案1、1设计要求1、读取DS18B20温度,在液晶上实时显示,并显示上、下限,初始值上限32,下限26。
2、通过按键可以设置环境温度的上限与下限,WK_UP键按下调节上限,再按下调节下限,再按下调节上限……KEY1按下加1;KEY0按下减1,根据上限与下限判断当前温度有没有超出范围。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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/< 你的盘符>/<android ndk 目录>”,为了区分该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控制台输出如下信息:下面运行opencv源码包自带的android应用,启动cygwin终端,进入例子程序CVCamera目录下:编译成功,将该工程导入eclipse,连接手机,选择在真机上运行,运行结果如下:表示androi-opencv移植成功,该eclipse开发环境具备了使用opencv进行android应用开发的功能。
3、Android-OpenCV应用实例我们自己开发了一个简单的图片处理的应用,功能是对彩色图片进行灰度处理和加入噪点处理。
新建android project,导入opencv库工程bin目录下的opencv.jar,这样新建的工程就可以调用java封装的opencv函数。
该工程用到了一个activity和一个layout,布局界面代码如下:Activity_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=""xmlns:tools=""android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent" ><Buttonandroid:id="@+id/btn_gray_process" <!--灰度处理按钮-->android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/str_grayproc"/><Buttonandroid:id="@+id/btn_salt_process" <!-- 加入噪点按钮-->android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/str_saltproc"/><Buttonandroid:id="@+id/btn_restore_process" <!-- 还原图片按钮-->android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/str_restoreproc"/><ImageViewandroid:id="@+id/image_view" <!-- 显示图片控件-->android:layout_width="wrap_content"android:layout_height="wrap_content"android:contentDescription="@string/str_desc"/></LinearLayout>Activity部分代码如下:public class MainActivity extends Activity implements OnClickListener{private Button gray; //灰度处理按钮private Button salt; //噪点按钮private Button restore; //还原按钮private ImageView imageView;private Bitmap bmp;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);gray = (Button) findViewById(R.id.btn_gray_process); //变量与xml文件中salt = (Button) findViewById(R.id.btn_salt_process); //的控件进行绑定restore = (Button) findViewById(R.id.btn_restore_process);imageView = (ImageView) findViewById(R.id.image_view);//将lena图像加载程序中并进行显示bmp = BitmapFactory.decodeResource(getResources(), R.drawable.lena);imageView.setImageBitmap(bmp); //为按钮点击事件设置监听器gray.setOnClickListener(this);salt.setOnClickListener(this);restore.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch(v.getId()) //根据被按下按钮的ID转到相应的处理函数{case R.id.btn_gray_process:graybmp();break;case R.id.btn_salt_process:saltbmp();break;case R.id.btn_restore_process:imageView.setImageBitmap(bmp);break;}}public void graybmp(){ //灰度处理函数int w = bmp.getWidth(); //获得图片的宽度,像素个数int h = bmp.getHeight(); //获得图片的高度,像素个数int[] pixels = new int[w*h]; //建立一个整形数组,大小为图片像素总数bmp.getPixels(pixels, 0, w, 0, 0, w, h);//获取图片的每一个像素值并存储到pixels数组中int[] resultInt = ImageProc.grayProc(pixels, w, h); //调用本地函数Bitmap resultImg = Bitmap.createBitmap(w, h, Config.ARGB_8888);//创建一个位图,大小与被处理图片大小相同resultImg.setPixels(resultInt, 0, w, 0, 0, w, h); //将处理后的像素数组赋值给新imageView.setImageBitmap(resultImg); //建的位图}static{System.loadLibrary("ImageProc"); 加载本地库文件}}ImageProc 类,定义本地函数public class ImageProc {public static native int[] grayProc(int[] pixels, int w, int h); //灰度处理public static native int[] saltbmp(int[] pixels,int w,int h,int n); //加入噪点}仿照opencv自带的安卓例子,编写makefile和定义本地函数的.c文件。