基于移动机器人的嵌入式开发 课件 16-二维码识别_第1页
基于移动机器人的嵌入式开发 课件 16-二维码识别_第2页
基于移动机器人的嵌入式开发 课件 16-二维码识别_第3页
基于移动机器人的嵌入式开发 课件 16-二维码识别_第4页
基于移动机器人的嵌入式开发 课件 16-二维码识别_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京工业职业技术学院嵌入式系统应用主讲:

XXX老师二维码识别学习目标掌握了解熟悉嵌入式车型机器人二维码功能实现软件设计13二维码的应用二维码的特点二维码的API2嵌入式车型机器人的二维码使用主讲内容主讲内容Speechcontent16.2二维码设计案例16.1二维码概述16.1.1二维码简介二维码(2-dimensionalbarcode)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的、黑白相间的、记录数据符号信息的图形。二维码在代码编制上巧妙地利用构成计算机内部逻辑基础的0、1比特流的概念,使用若干与二进制相对应的几何形体来表示文字数值信息,通过图像输入设备或光电扫描设备自动识读以实现信息自动处理。它具有条码技术的一些共性:每种码制有其特定的字符集,每个字符占有一定的宽度,具有一定的校验功能等。同时还具有对不同行的信息自动识别及处理图形旋转变化点功能。二维码概述16.1.2二维码API简介在Android中,一般使用Google公司提供的Zxing开源库解析二维码。使用Zxing时,首先要导入corejar包。导入完成以后,在项目中添加文件RGBLuminanceSource.java。该文件帮助用户调节二维码图片像素的亮度,转换为计算亮度较好的颜色。其中的代码如下:二维码概述importjava.io.FileNotFoundException;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importcom.google.zxing.LuminanceSource;publicclassRGBLuminanceSourceextendsLuminanceSource{ privatefinalbyte[]luminances; //类的重构

publicRGBLuminanceSource(Bitmapbitmap){ super(bitmap.getWidth(),bitmap.getHeight()); //得到图片的宽高二维码概述intwidth=bitmap.getWidth(); intheight=bitmap.getHeight(); //得到图片的像素

int[]pixels=newint[width*height]; // bitmap.getPixels(pixels,0,width,0,0,width,height); luminances=newbyte[width*height]; //得到图片每点像素颜色二维码概述for(inty=0;y<height;y++){ intoffset=y*width; for(intx=0;x<width;x++){ intpixel=pixels[offset+x]; intr=(pixel>>16)&0xff; intg=(pixel>>8)&0xff; intb=pixel&0xff; //已经是灰度图像,所以可选择任何通道

if(r==g&&g==b){ luminances[offset+x]=(byte)r; }二维码概述else{ luminances[offset+x]=(byte)((r+g+g+b)>>2); } } } } //类的重构

publicRGBLuminanceSource(Stringpath)throwsFileNotFoundException{ this(loadBitmap(path));

}二维码概述privatestaticBitmaploadBitmap(Stringpath)throwsFileNotFoundException{ Bitmapbitmap=BitmapFactory.decodeFile(path); if(bitmap==null){ thrownewFileNotFoundException("Couldn'topen"+path); } returnbitmap;

}二维码概述@Override publicbyte[]getMatrix(){ returnluminances; } @Override publicbyte[]getRow(intarg0,byte[]arg1){ if(arg0<0||arg0>=getHeight()){ thrownewIllegalArgumentException( "Requestedrowisoutsidetheimage:"+arg0); }二维码概述intwidth=getWidth(); if(arg1==null||arg1.length<width){ arg1=newbyte[width]; } System.arraycopy(luminances,arg0*width,arg1,0,width); returnarg1; }}二维码概述

第一个方法中需要一个参数BinaryBitmap,字面理解为二进制字节图片,这就需要接着看com.google.zxing包中的BinaryBitmap类。BinaryBitmap(Binarizerbinarizer)-com.google.zxing.BinaryBitmap这也需要一个参数,按照上面的思路实例化Binarizer类时,发现只能处理黑色图片,要求较高。查看其开放的接口类,发现HybridBinarizer类混合二进制类可以满足需求,得到最终需要的参数BinaryBitmap。二维码概述主讲内容主讲内容Speechcontent16.1二维码概述16.2二维码设计案例16.2.1AndroidUI设计结合嵌入式车型机器人的应用,可以开发一个简单的二维码识别案例,二维码演示案例UI界面如下图。二维码概述整个UI设计应用了TextView、EditText、Button和ImageView四个控件,程序源码见P143。16.2.2利用Android实现嵌入式车型机器人的二维码的应用二维码解析开发流程,核心为core.jar包中解析类的应用,只要得到解析类需要的参数,即可通过QRCodeReader类提供的解析方法实现对二维码的解析。(1)在进行二维码开发时,要在项目中的libs文件夹下添加core.jar文件夹。其为谷歌提供的二维码解析工具包。(2)MainActivity类中编写的布局功能

具体开发参考代码见P144-P146二

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论