电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
机器视觉初探, MAIXDOCK 制作二维码扫码器
分 享
扫描二维码分享
机器视觉初探, MAIXDOCK 制作二维码扫码器
机器视觉
python
皮皮学电子
关注
发布时间: 2019-10-08
丨
阅读: 6749
![](https://cf05.ickimg.com/bbsimages/201910/09bc677357ee67f7b334a8208454485f.jpg) #### 图像处理 摄像头传输图片信息到电脑,处理器处理信息解读出图片的含义,让机器读懂我们的世界,这件事放在十年之前简直是天方夜谭,但是在今年,各种AI芯片的产生以及AI算法的进步使得所有的这一切都变得轻而易举。 我一直认为人类是高科技以及高级智慧的结晶,我们的双眼可以轻易辨别身边的物体,可以轻易察觉危险的临近,可以轻易估计距离的远近。我们在不知不觉中完成这一切,一口说出认识人的名字,速度快得甚至忘了我们是如何完成这些复杂以及令人惊叹的举动。我们如何做到的?数百万亿级的神经元共同协作,造就了我们智慧的大脑。 ![](https://cf05.ickimg.com/bbsimages/201910/84723946f493fe9d57a92c1500ae631c.jpg) 一个刚刚出生的婴儿能认识世界上的物体吗?我们出生之后,花费好几年的时间去观看世界上的万物,去了解他们,我们的眼睛每天拍摄繁多的图片,送给大脑去处理,经过几年的学习,我们就已经可以识别大部分东西了。其实教会一个神经网络如何识别各种物体,就是让他不断的观看这些图片,找出图片中的特征,经过许多图片的观看之后,这个神经网络也学会了辨别这些物体,就像婴儿那样。 机器视觉其实还涉及到图像的预处理,我们看到的世界是彩色的,彩色摄像机采集到的图片也是彩色的,但是这种彩色照片不一定适合神经网络去处理,因此我们需要对其预处理,将其转换到适合神经网络处理的格式。 #### MAIX DOCK 我选择了Sipeed出品的MAIXDOCK套件来完成接下来扫码器的制作,MAIXDOCK采用了一颗国产的处理器K210,这是一颗AI芯片,内置了加速器,可以在进行AI运算的时候速度更快。购买的话可以在某宝上搜索名字就可以。 ![](https://cf05.ickimg.com/bbsimages/201910/366eec1461045fa564f3c90b5bf58229.jpg) 收到之后,这个套件里面包含了一个主板,一个摄像头以及一块显示屏。我将会用摄像头采集照片来识别二维码的位置以及是否存在二维码,使用显示屏来显示二维码包含的内容。 ![](https://cf05.ickimg.com/bbsimages/201910/26c97f705d3310f0ad5d3ac75f89dab4.jpg) 这个开发板使用的居然是type-C 的接口,很时尚的设计,不过里面也配备了一个type-C转micro-USB转换头 ![](https://cf05.ickimg.com/bbsimages/201910/994c07a3b5064c26aa4db5d83b2f8a57.jpg) 好消息是MAIXDOCK支持多种编程方式,包括Arduino以及micropython,我选择使用micropython来编程 ![](https://cf05.ickimg.com/bbsimages/201910/a8e01e9a9322525eb659ddaebddbf458.png) 首先在官网上下载了固件烧录程序以及固件 ![](https://cf05.ickimg.com/bbsimages/201910/8f85ff7254513937d2026c4acbc26677.png) 烧录之后就可以使用了,上电之后,显示屏会显示欢迎字样 ![](https://cf05.ickimg.com/bbsimages/201910/890e238c300ac758133d5e0988a1734c.jpg) 其实和这个板子的交互有多种方式,使用官方出品的开发环境或者使用putty这类的软件都可以,我首先使用putty登录。建立一个串口链接,选择串口号码以及波特率 ![](https://cf05.ickimg.com/bbsimages/201910/c7a30d43c43a80b8649d1648a757782c.png) 打开串口登陆界面,看到了开发板输出一些欢迎字样,最下方输出三个大于号表示可以在这里输入指令,对开发板编程了。 ![](https://cf05.ickimg.com/bbsimages/201910/cb15bf6b1f113ece78b8e1f8020c6947.png) 首先我输入显示hello的代码 ![](https://cf05.ickimg.com/bbsimages/201910/38c7e841cfd24f9631cdd1ad7c15d911.gif) 我还可以查看这个开发板的文件系统,发现里面有两个文件,我猜测freq文件应该是配置处理器运行速度的配置文件,boot应该是上电之后的执行的文件,估计是一些配置什么的,这个开发板上电就会显示欢迎字样的原因应该也是在boot文件中有对应的代码 ![](https://cf05.ickimg.com/bbsimages/201910/ec4bc57e7bd8b4ad27c8af1468e672e1.png) 接下来打开官方出的开发环境,链接开发板,发现里面已经有一个示例了,点击烧录看看会发生什么 ![](https://cf05.ickimg.com/bbsimages/201910/526084744dcc47c1886cb6e3a6c635e3.png) 显示屏以及电脑上都实时的显示了摄像头拍摄到的画面。 ![](https://cf05.ickimg.com/bbsimages/201910/0592cb8c7162536af76be1261588a3f2.jpg) 测试完毕,接下来我在这个示例代码上改进,完成二维码识别的任务 #### 二维码识别 在数据手册中,我找到了识别二维码的函数,这个函数用来识别二维码,这个函数里面就含有包括图像处理的一系列算法,只不过开发者把这些都给我们做好了 ![](https://cf05.ickimg.com/bbsimages/201910/8ece0c2849720118f5b803d68d7a4448.png) 我只需要调用这个find_qrcodes的函数,其就可以返回一个二维码对象,因此我在刚才的示例代码中输入如下代码 ![](https://cf05.ickimg.com/bbsimages/201910/36f55228906ecfa2bf11d5e7a85cc6db.png) 接下来就很简单了,这个寻找二维码的函数返回了一个二维码对象,通过其长度可以判断是否存在二维码对象,即可以判断摄像头是否捕捉到了二维码。如果存在二维码,我们就可以调取这个对象的rect属性去绘制二维码的外框,调取这个对象的payload属性去得知二维码的内容 ![](https://cf05.ickimg.com/bbsimages/201910/5c2f0d1558beb114db959597e434d103.png) 到这里这个识别器就制作好了,全部代码如下 ![](https://cf05.ickimg.com/bbsimages/201910/7c52cd399c354060ec5e19ccfb78f495.png) 上传代码,我就得到了一个二维码识别器 ![](https://cf05.ickimg.com/bbsimages/201910/d4b911b47a8f463a53dec954cf1cc7db.gif) 为了验证二维码识别是否正确,我使用WPS功能的二维码生成器来生成一个二维码,看看我的识别器是否正常工作 ![](https://cf05.ickimg.com/bbsimages/201910/b56f17b9ba12e16d8f1e2e260a3ff0f7.gif) 可以看出,识别器正常识别出了信息。 最后有什么问题欢迎联系我 ![](https://cf05.ickimg.com/bbsimages/201910/9493923d51d00b55ee4b795530d260f7.jpg)
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
3
)
皮皮学电子
擅长:消费电子 智能硬件
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交