如果是桌面上的
linux C语言去做这个识别二维码,这个貌似难度有太大。而且很难找到资料的。
有时候要知道变通,你为什么不用java的jar库去做识别呢,而且很多的现成资料可以查看,
如果你非得用C去做,那么建议你查询一下libqrencode 这个用C写的库
你这是要识别桌面上的二维码还是通过摄像头识别二维码如果是桌面上的
linux C语言去做这个识别二维码,这个貌似难度有太大。而且很难找到资料的。
有时候要知道变通,你为什么不用java的jar库去做识别呢,而且很多的现成资料可以查看,
如果你非得用C去做,那么建议你查询一下libqrencode 这个用C写的库
二维码的本质就是根据某种约定的编码方式,将一段文本信息转换为一个能够被解码识别的图片。因为二维码只是一种编码方式,是一种信息的载体,可见二维码用途的关键不在于二维码,而在于如何定义这段文本信息,约定好文本信息的用途。当前,二维码支付功能已经改变了我们的生活方式,出行不再需要带上现金,就能够通过二维码乘公交、搭地铁、打出租车、付停车费和超市购物付款等等。由于QR码具有信息容量大、可靠性高和保密防伪性强等特点,常见的二维码支付均采用QR码。接下来将对ZLG二维码算法进行介绍,分别阐述ZLG二维码算法特点、接口调用方法、可实现平台与性能及效果展示。
一、二维码算法特点
由于二维码支付相关领域的迅速发展,ZLG针对性的进行了二维码识别算法的研发和优化,目前ZLG二维码算法库仅提供QR码接口的调用。QR码识别算法特点如下:
l 以算法库的形式提供,支持多平台移植,可在现有硬件上使用,大大节省成本;
l 算法调用简单,方便开发人员快速实现QR码识别功能;
l 同时支持手机屏幕条码和纸质条码,适用范围广;
l 识别速度快,针对手机支付场景的优化,可实现闪付;
l 支持手机碎屏QR码识别,贴合实际使用的场景。
二、二维码接口调用
ZLG二维码算法库目前提供文件列表为: aw_qrcode.h、 libqr.a或libqr.so。算法调用方式简单,仅需要算法初始化、解码和内存释放三个步骤,QR码算法头文件“aw_qrcode.h”接口如下:我们以基于AWorks系统的M7系列平台为例,成功调用ZLG二维码算法之前,需要准备的工作如下:
保证能够获取到摄像头的视频帧数据(不同平台可以有不同的实现方式,linux系统可以通过opencv获取图像帧数据),并且转为单通道的灰度图。例如,基于AWorks系统的M7平台demo使用如下接口获取RGB565格式的图像。
259914-fig-06.jpg
由于获取到的图像为RGB565格式,需要转换为单通道灰度图,接口如下:
259914-fig-07.jpg
至此,准备工作已经完成,算法所需要的灰度图数据已经得到。接下来进行算法调用,二维码识别接口调用存在三个步骤。
首先,使用算法初始化接口实现内存的初始化 *** 作:
259914-fig-08.jpg
接着,即可通过QR码解码接口实现二维码图像解码 *** 作,指针 imgData指向的地址即为灰度图像存放的地址。
259914-fig-09.jpg
最后,释放初始化过程中分配的内存:
259914-fig-10.jpg
基于AWorks系统的M7平台调用二维码算法伪代码如下:
259914-fig-11.jpg
三、ZLG算法合作模式及平台支持
ZLG二维码算法可以以SDK包的形式免费开放给各位工程师,只需使用ZLG嵌入式核心板(硬件平台)即可快速开发出具备商用性能的二维码识别应用。算法原则上可以支持基于AWorks和Linux系统的所有硬件平台。目前,主要测试了基于AWorks系统的M7系列平台,及基于Linux系统的A7和A8系列平台的相关性能,并通过提供静态库或动态库的方式供使用。void main()void*fd=NULL,*buf=NULL,*buf_gray,aw_err_t ret=0int ret_qrchar*msgbuf_gray=(uint8_t*)malloc(320*240*sizeof(uint8_t))aw_qrcode_initO//解码内存初始化while(1)aw_er_t aw_camera_get_video_buf(fd,&buf)//获取一帧图像的数据if(ret==AW_OK)_565_to_gray(buf,buf_gray,320*240)//将RGB565格式转成灰度图ret_qr=aw_grcode_decode(buf_gray,320,240,msg)//解码if(tret_qr)printf(“识别成功,信息为:%sn”,msg)free(buf_gray)aw_qrcode_deinit0;//释放初始化内存,
*@bniefQR解码信息指针初始化qr_msg"aw_qrcode_init):*@briefQR解码信息指针释放void aw_grcode_deinit(qr_msg"msg):@briefQR解码函数@param[in]imgData单通道图像头地址@param in]width单通道图像宽度*@param[in]height单通道图像高度*@param[out]msg解码信息*@reham返回解码成功与否*@note*1、输入的图像数据为单通道数据,RGB图需转为灰度图,YUV图需取Y通道数据*2、解码标识符的信息分别表示:0:表示解码成功-1:表示解码失败imeData intwidth int height ar mse*msa
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)