二维码识别 基于stm32 ov7725
二维码识别 基于stm32 ov7725
二维码识别技术在我们的生活中应用的很方便了,但基本都是基于手机的,目前在公交车上也存在了扫描二维码的机器,上次坏了之后,发现一只小企鹅,原来是基于linux的,这里介绍一下基于stm32f767和ov7725以及zbar的二维码识别技术,其实相关的代码正点原子也给出了,但是核心的识别库是以.lib文件的形式给出的,没有源码
这里将从以下几个方面介绍:
基于F767的OV7725
zbar算法的介绍
zbar算法的移植
stm32的HAL库介绍
总结
基于F767的OV7725
基本上所有的OV系列的摄像头都差不多,本质上就是工厂ID,和输入的寄存器的值不同,因为正点原子官方提供了正规的OV2640的代码,我们只需要稍作修改就可以了,当然,在实际过程中涉及到利用DCMI接口进行帧的获取,这个地方与0V2640也有所不一样,需要根据数据手册来完成,具体的看我下面提供的代码
zbar算法的介绍
zbar算法的介绍,在网络上有一篇很好的文章
这里贴上链接:http://blog.csdn.net/u013738531/article/details/54574262
zbar算法的移植
zbar算法是由日本发明的,用C语言完成,因此可以很好的移植进STM32,当然解码二维码还有zxing算法,但是这个好像是用java完成的,因此不好移植,所以在单片机上,大家还是主要用zbar
关于zbar的移植需要注意一下几个点:
(1):因为是基于C库的代码,中间会有很多的printf等函数,但我们使用的是自己定义的printf函数,因此关于此类函数,都需要注意
(2):关于free,malloc等内存管理的,正点原子自己提供了相关的内存管理函数,因此,我们需要对应的替换掉
(3):我再淘宝上面买了一个基于stm32的zbar算法,发现跟网上的差不多,自己修改一下就可以使用了,自己根据这个可以看一下怎么移植,以后关于一些工具的移植都可以参考这种移植方法,下面我提供一下zbar的算法
stm32的HAL库介绍
- 现在大家做stm32的开发,基本上都是基于库函数,因为库函数帮助我们完成了很多任务,提供了很多API,我们只需学习如何使用这些api即可,最新的hal库同样提供了很多API,我们的这个工程最重要的两个地方涉及;
- (1)sram的使用
- 最新的sram的api与标准库大致相同,主要是熟悉每个sram接口的作用,其可以支持sram,sdram等,需要我们去稍作修改即可
- (2)dcmi的使用
- dcmi主要拿来产生帧中断,并配合DMA进行图像数据的传输,明白怎样设定这些结构体
总结
很多东西都忘记了,下面贴上我的代码,自己在代码中去看具体的操作,结合正点原子官方提供的代码,去做一些对比,希望可以从中获取你想要的
参考资料:http://www.makeru.com.cn/ 嵌入式学习交流群:561213221