Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
MicroPython
分享一个基于 RTT-MicroPython 实现的图像识别
发布于 2020-01-16 14:53:22 浏览:6221
订阅该版
[tocm] 分享一个基于 RTT-MicroPython 实现的图像识别 如果想尝试通过简单的几行 Python 代码实现一个简单的图像识别的功能,你需要有所准备如下: 1.硬件准备:麻雀1号开发板 2.软件准备:VS Code 和 RT-Thread MicroPython IDE 关于硬件准备:这个只能自己淘宝上买了,官方的淘宝链接。 关于软件的安装与使用这里不作过多的说明,详细的方法可以参考 RT-Thread 微信公众号里面的“2019年RT-Thread线下培训全套资料都在这里了!无套路直接领取”里面`深圳开发者大会CodeLab资料:基于BK7252麻雀一号+RT-Thread-MicroPython图像识别`的资料文档,那应该如何获取这份资料呢,据说只需要在公众号后台回复关键词“2019”,即可获得。 话不多说,直接上个效果图给大伙瞧瞧。 [align=center]![识别结果.png](/uploads/202001/16/143810nwngegrxnvlmhvrv.png) [align=center]实际效果图 [align=center]![终端识别结果打印.png](/uploads/202001/16/143811yb68g0hb4j9rgsbb.png) [align=center]串口终端打印识别结果图 此处留个小疑问,稍后再说。 下面简单说明一下,基于麻雀1号开发板如何通过简单的几行 Python 代码实现一个简单的图像识别的功能。 实现原理 设备在联网状态下,通过按键中断触发拍照并保存到本地,通过 request 模块把经过服务器要求的 base64 编码和 url 编码后的图片数据上传到云端识别,在终端中打印获得的识别结果,并把部分图片识别结果到 LCD 屏上。 实现过程 1.设备联网 ``` #麻雀 1 号联网指令 #导入联网模块 import rtthread #注意这里的"test"为热点名称,"123456789"为热点的密码,这里要改为自己手机热点的名称 rtthread.wifi_join("w0","test","12345678") ``` 2.设备拍照保存```#导入 camera 模块 from camera import camera cam = camera() #保存图片到文件系统中,"picture.jpg"为保存文件的名称 cam.snapshot("picture.jpg") ``` 3.图片经过 base64 编码和 url 编码上传到云端识别,串口终端打印获得返回的识别结果```#使用此示例必须保证设备联网 #导入自定义的 userfunc 和 requests的模块 import userfunc try: import urequests as requests except ImportError: import requests #请求云服务器的 url 地址 request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general" image_tag = 'image=' #组合上传的数据,在图片数据前添加'image='的标签,图片数据通过自定义模块经过 base64 和 urlencode 处理。 #'picture.jpg'为前面拍照保存到本地的图片 params = image_tag + userfunc.picbase64urlencode('picture.jpg') #注意这里的 access_token 值可以修改为自己获取的 token值 access_token = '[24.fb87fe7335f073ac02bd2e8c9a3e3173.2592000.1579168740.282335-18048107]' #组合请求的 url 参数 request_url = request_url + "?access_token=" + access_token # 设置 headers headers = {'content-type': 'application/x-www-form-urlencoded'} #post 上传数据 response = requests.post(request_url, data=params, headers=headers) #打印服务器回应的数据 if response: print(response.text) ``` 4.识别结果显示在 LCD 屏上 ```#显示中文到 LCD 上 #导入自定义的 userfunc 模块 import userfunc #显示图片到 LCD 上 userfunc.lcd_show_pic(pic_name) #显示中文到 LCD 上 userfunc.show_chinese(60,130,'识别结果:',0x001F,0x0000) ``` 5.按键中断触发拍照识别。```from machine import Pin def func(v): print("Hello rt-thread!") # Get the GPIO pin number from GPIO index, for details see pin_num example. key_0 = Pin(("key_0", 13), Pin.IN, Pin.PULL_UP) key_0.irq(trigger=Pin.IRQ_RISING, handler=func) 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 插件打开工作区然后同步文件夹里面的所有文件到设备上,注意需要修改对应的联网指令。 项目工程代码 下载附件 [MicroPython_demo.bin](https://oss-club.rt-thread.org/uploads/202001/16/144605kpqfuyp5s6pqsz1n.attach) 下载附件 [empty_project_demo.zip](https://oss-club.rt-thread.org/uploads/202001/16/144605fqdyx5sxhonr7v58.zip)
查看更多
1
个回答
默认排序
按发布时间排序
我夏了夏天
认证专家
2020-01-16
Life isn't about finding yourself, life is about creating yourself.
哇 太厉害了,我也要试试
撰写答案
登录
注册新账号
关注者
1
被浏览
6.2k
关于作者
shadowliang
Hello,world!!!
提问
4
回答
100
被采纳
6
关注TA
发私信
相关问题
1
请问rt-thread有没有移植micropython呢
2
micropython import 文件名的方式执行脚本问题
3
第一篇:Micropython 的起源和发展
4
第二篇:RT-Thread Micropython 简介
5
第三篇:RT-Thread Micropython 快速入门
6
第四篇:Micropython DIY 项目汇总
7
第五篇:Micropython 教程和资源
8
第六篇: RT-Thread MicroPython 学习经验和学习路线
9
RT-Thread MicroPython 最新开发板固件汇总【已失效】
10
有Mpy专门的板块啦~
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用RC522软件包驱动FM1722
2
常量数据类型和表达式陷阱分享
3
进行i2c驱动移植的经验总结
4
在VSCode中使用clang-format
5
我该如何使用这个微雪的WIFI400 WIFI-LPB-100在rtt里或者我该怎样为它开发驱动
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
xiaorui
1
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部