搜索
bottom↓
回复: 10

分享一个基于MicroPython 实现的图像识别

[复制链接]

出0入0汤圆

发表于 2020-1-17 14:01:13 | 显示全部楼层 |阅读模式
本帖最后由 我夏了夏天 于 2020-1-17 14:03 编辑

分享一个基于 RTT-MicroPython 实现的图像识别

如果想尝试通过简单的几行 Python 代码实现一个简单的图像识别的功能,你需要有所准备如下:

1.硬件准备:麻雀1号开发板
2.软件准备:VS Code 和 RT-Thread MicroPython IDE

关于硬件准备:这个只能自己淘宝上买了,官方的淘宝链接。

效果展示:



终端提示:



下面简单说明一下,基于麻雀1号开发板如何通过简单的几行 Python 代码实现一个简单的图像识别的功能。

实现原理

设备在联网状态下,通过按键中断触发拍照并保存到本地,通过 request 模块把经过服务器要求的 base64 编码和 url 编码后的图片数据上传到云端识别,在终端中打印获得的识别结果,并把部分图片识别结果到 LCD 屏上。
实现过程

1.设备联网

麻雀 1 号联网指令导入联网模块

  1. import rtthread
  2. #注意这里的"test"为热点名称,"123456789"为热点的密码,这里要改为自己手机热点的名称
  3. rtthread.wifi_join("w0","test","12345678")
复制代码


2.设备拍照保存

导入 camera 模块
  1. from camera import camera

  2. cam = camera()
  3. #保存图片到文件系统中,"picture.jpg"为保存文件的名称
  4. cam.snapshot("picture.jpg")
复制代码


3.图片经过 base64 编码和 url 编码上传到云端识别,串口终端打印获得返回的识别结果

使用此示例必须保证设备联网,导入自定义的 userfunc 和 requests的模块

  1. import userfunc
  2. try:
  3.     import urequests as requests
  4. except ImportError:
  5.     import requests
  6. #请求云服务器的 url 地址
  7. request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general"
  8. image_tag = 'image='
  9. #组合上传的数据,在图片数据前添加'image='的标签,图片数据通过自定义模块经过 base64 和 urlencode 处理。
  10. #'picture.jpg'为前面拍照保存到本地的图片
  11. params = image_tag + userfunc.picbase64urlencode('picture.jpg')
  12. #注意这里的 access_token 值可以修改为自己获取的 token值
  13. access_token = '[24.fb87fe7335f073ac02bd2e8c9a3e3173.2592000.1579168740.282335-18048107]'
  14. #组合请求的 url 参数
  15. request_url = request_url + "?access_token=" + access_token
  16. # 设置 headers
  17. headers = {'content-type': 'application/x-www-form-urlencoded'}
  18. #post 上传数据
  19. response = requests.post(request_url, data=params, headers=headers)
  20. #打印服务器回应的数据
  21. if response:
  22.     print(response.text)
复制代码


4.识别结果显示在 LCD 屏上

显示中文到 LCD 上,导入自定义的 userfunc 模块

  1. import userfunc
  2. #显示图片到 LCD 上
  3. userfunc.lcd_show_pic(pic_name)
复制代码

#显示中文到 LCD 上
  1. userfunc.show_chinese(60,130,'识别结果:',0x001F,0x0000)
复制代码


5.按键中断触发拍照识别

  1. from machine import Pin

  2. def func(v):
  3.     print("Hello rt-thread!")

  4. # Get the GPIO pin number from GPIO index, for details see pin_num example.
  5. key_0 = Pin(("key_0", 13), Pin.IN, Pin.PULL_UP)
  6. key_0.irq(trigger=Pin.IRQ_RISING, handler=func)
  7. key_0 = Pin(("key_0", 13), Pin.IN, Pin.PULL_UP)
复制代码


注意上面的代码均为单个功能实现的Python 代码,完整功能代码在附件文件夹中的`main_example.py`文件中。

如何快速上手体验一把基于 RTT-MicroPython 实现的图像识别功能,请严格参考下面的使用教程。

使用教程

在麻雀1号开发板上烧录附件中的 MicroPython_demo.bin  文件,然后可以参考附件中的项目工程代码,也可以直接打开该项目工程文件,注意需要修改联网部分的WiFi 热点名称和密码。

总结

不得不赞,MicroPython 的使用真的很方便,就简单的几行代码就可以实现了云端图像识别的功能,RT-Thread MicroPython IDE 的功能界面也是挺棒的,使用起来可方便了。

资料分享:

在附件中有两个文件分别是
(1)MicroPython_demo.bin 文件该文件需要烧录到麻雀1号开发板上。
(2)图像识别的完整项目工程文件夹,解压缩后通过 VS code 的 RT-Thread MicroPython IDE 插件打开工作区然后同步文件夹里面的所有文件到设备上,注意需要修改对应的联网指令。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2020-1-17 14:11:47 | 显示全部楼层
吓了我一跳,还以为是离线图像识别。

出0入0汤圆

 楼主| 发表于 2020-1-17 14:16:33 | 显示全部楼层
lkm_unication 发表于 2020-1-17 14:11
吓了我一跳,还以为是离线图像识别。

后续有更好的硬件了,移植一些轻量级模型上来也是可以做的

出95入100汤圆

发表于 2020-1-17 14:19:54 | 显示全部楼层
这个也算图像识别码?这个算是拍图片,上传,获得结果

出0入0汤圆

 楼主| 发表于 2020-1-17 15:24:29 | 显示全部楼层
lhj200304 发表于 2020-1-17 14:19
这个也算图像识别码?这个算是拍图片,上传,获得结果

  哈哈

出95入100汤圆

发表于 2020-1-17 15:37:03 | 显示全部楼层
这个RTT-MicroPython还是不错的

出0入0汤圆

发表于 2020-1-21 17:34:41 来自手机 | 显示全部楼层
也是吓我一跳,以为是离线的

出0入71汤圆

发表于 2020-1-21 19:11:14 | 显示全部楼层
180MHz的主频,没有NPU,不可能做离线的了,拿来做做毕业设计骗骗教授们还是可以的

出0入0汤圆

发表于 2020-1-21 19:54:08 来自手机 | 显示全部楼层
这只能算拍照吧

出0入0汤圆

 楼主| 发表于 2020-2-29 13:54:30 | 显示全部楼层

  算是拍照加上传把

出0入0汤圆

 楼主| 发表于 2020-2-29 13:54:47 | 显示全部楼层
dellric 发表于 2020-1-21 19:11
180MHz的主频,没有NPU,不可能做离线的了,拿来做做毕业设计骗骗教授们还是可以的 ...

教授怎么可能骗得过
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 10:09

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表