条码识别模块开发设计
1模块细分
图一模块细分
1.1接口模块
本模块主要将条码识别模块的功能进行封装后,展现给需要使用本模块的应用程序。
它是条码识别模块与应用程序的通信桥梁。
1.2预览取景模块
预览取景模块主要负责调用移动终端的摄像头进行预览,做到自动曝光、自动调焦等功能,并将预览数据按帧传递给图像预处理模块。
1.3图像预处理模块
图像预处理模块主要对图像进行二值化处理。
1.4识别模块
识别模块主要将已经预处理的图像,按照接口模块中被指定的模式来解析条码数据
1.4.1图片定位模块
主要根据图像数据和定位模式对图片进行旋转以及找关键点等处理
1.4.2基站定位处理模块
对图像进行解码,并反馈给接口模块最终解码数据。
2接口设计
2.1接口功能定义
2.1.1识别图像
函数名:DecodeResult decodeImage(char * imageFile,int barMode,char*
characterset,int requestId);
功能:对指定图像进行解码
参数描述:imageFile--需要识别的文件全路径(支持bmp、png、jpeg等格式)
barMode—条码类型,可以多个类型进行或处理(具体见附录条码类型定义)
characterset—条码的字符集,具体见附录字符集描述
requestId—请求id,对每个请求进行标识
返回值:DecodeResult—识别结果,具体内容见结构描述
2.1.2启动识别
函数名:DecodeResult startDecode(bool isOneShot,int barMode,int
timeout,char*
characterset,int
requestId);
功能:开启摄像头的预览功能(如摄像头已经开启,不会重复开启)进行条码识别
参数描述:isOneShot—是否一次识别后就关闭预览模式,true 是 false 否,表示需要继续识别,只有在调用cancleDecode后才关闭摄像
头,并退出预览界面
barMode—条码类型,可以多个类型进行或处理(具体见附录条码类型定义)
characterset—条码的字符集,具体见附录字符集描述 timeout—识别超时时间
requestId—请求id,对每个请求进行标识
返回值:DecodeResult—识别结果,具体内容见结构描述。
2.1.3退出识别
函数名:void cancleDecode();
功能:停止识别
2.2接口数据结构定义
2.2.1识别结果数据定义
class DecodeResult {
public oolean result = 0; //识别状态0:成功 1:失败
public int barcodeType = 0; //条码类型,具体见附录
public int correctionLevel = 0; //纠错级别
public String resultStr = null; //识别出的字符串
public int errno = 0; //错误码,定义见附录
public String errInfo = null;//错误附加描述
};
3附录
3.1条码类型定义
3.2支持字符集定义
3.3错误码定义。