热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HaaSPython+AI隆重登场使用ESP32+摄像头机器视觉实现水果识别

水果识别系统现在很多农场里边使用摘采机器人识别水果进行水果摘采,盒马超市也使用自动识别称来识别水果种类自动计费。本案例则是使用HaaSPython对摄像头图像进行采集

水果识别系统

   现在很多农场里边使用摘采机器人识别水果进行水果摘采,盒马超市也使用自动识别称来识别水果种类自动计费。本案例则是使用HaaS Python对摄像头图像进行采集,并调用HaaS云端积木能力对水果进行识别。

1、背景知识

   水果的种类繁多,识别种类越多,需要越多的水果图片数据进行模型训练。本章通过使用串口摄像头采集水果照片上传至云端进行识别。目前HaaS云端积木的水果检测识别功能可以检测图像中的所有水果,并返回水果的名称和置信度。水果识别可以识别60种常见的水果和16种坚果。比如:八月瓜、百香果、菠萝、菠萝蜜、草莓、橙子、脆瓜、甘蔗、桂圆、哈蜜瓜、海底椰、海红果、红毛丹、火龙果、桔子、蓝莓、梨、荔枝、李子、榴莲、蔓越莓、芒果、梅子、猕猴桃、木瓜、柠檬、牛油果、欧李、枇杷、苹果、葡萄、茄瓜、桑葚、沙果、沙棘果、山楂、山竹、蛇皮果、石榴、柿子、树莓、桃、桃胶、西瓜、西梅、仙人掌果、香瓜、香蕉、橡子、小番茄、杏子、雪莲果、杨梅、洋蒲桃、杨桃、椰子、银杏果、樱桃、柚子、枣、南瓜子、夏威夷果、巴旦木、开心果、杏仁、松子、板栗、核桃、榛子、白果、碧根果、腰果、花生、葡萄干、葵花子、西瓜子等。

1.1、场景功能拆解

   实验整体步骤如下:

    1. 连接硬件
    2. HaaS云端积木平台创建设备
    3. 设备端开发
    4. 运行结果

1.2、准备


  1. M5Stack Core2开发板 一套
  2. M5Stack Unit CAM摄像头 一个
  3. 连接线 一条

   涉及到的硬件购买链接如下,仅供参考,不负责商家发货的品质保障等问题!

名称数量参考链接
M5Stack Core2开发版1M5Stack Core2
microUSB数据线1M5Stack Core2开发套件自带
摄像头1M5Stack Unit CAM摄像头
连接线1M5Stack GROVE连接线 请选用10cm长即可

   硬件连线图如下图所示:


2、云端设备创建


2.1、注册阿里云账号

   进入阿里云账号注册页面 进行阿里云账号注册,注册完成后登录官网。如果您已经有阿里云账号,直接登录即可。


2.2、HaaS云端积木平台

   进入阿里云HaaS官网 。

   如上图所示,点击右上角的“控制台”,进入HaaS云端积木的控制台页面。


  1. 创建设备

   在左侧导航栏设备管理中,可以看到产品设备选项,点击“产品”,可以看到平台默认创建了“haas_正式游客产品”这个产品; 所以开发者只需要创建设备即可。点击“批量添加”, 添加方式为“自动生成”, 申请数量可填为“1”个,即可完成新设备的创建。


  1. 获取设备的三元组

   在设备的列表中,新创建的设备上点击“查看”,就可以获得设备的三元组信息,之后这个三元组信息会在设备端代码中使用到。


3、设备端开发


3.1、开发环境准备

   在进行下一步之前请确保M5StackCore2中已经烧录了HaaS Python固件并且其开发环境已经搭建完毕。详情请参考M5StackCore2快速开始中的说明。

3.2、创建解决方案

   如下图所示,打开VS Code之后在新建一个基于helloworld的python工程,设定好工程名称(“fruits_recognization”)及工作区路径之后,硬件类型选择m5stackcore2,点击”立即创建“,创建一个Python轻应用的解决方案。

   将HaaS Pyhton水果识别代码文件下的所有脚本进行复制到“fruits_recognization”工程根目录中覆盖原本的脚本,然后进行如下设定完成设备端代码的开发。

Python脚本的详细说明请参考脚本内嵌的文字注释


  1. 修改路由器名称及密码

   修改fruits_recognization工程里main.py中SSID和PWD的值为读者实际要连接的路由器的名称及密码(请注意名称和密码都需要放在''符号中间)。

# Wi-Fi SSID和Password设置
SSID='Your-AP-SSID'
PWD='Your-AP-Password'

   修改完成之后connect_wifi函数就会连接读者自己设定的路由器。

  1. 修改设备的三元组信息

   按照[获取设备的三元组]获取三元组信息,填入main.py中:

# HaaS设备三元组
productKey = "Your-ProductKey"
deviceName = "Your-devicename"
deviceSecret = "Your-deviceSecret"

4、运行结果

   推送fruits_recognization工程到M5StackCore2开发板之后,脚本在网络连接成功后,会将IP地址信息打印在屏幕上。

   屏幕上提示”NTP done“代表NTP时间同步成功。NTP时间同步成功之后,脚本会自动从摄像头采集图像信息并调用HaaS云端积木能力进行水果识别,在检测到水果后会在屏幕上显示红色”XXXX Detected“字样。

   如下是整个过程中串口的日志打印,其中:

  • Wi-Fi is connecting:代表正在连接路由器
  • IP: 192.168.0.158:打印获取到的IP地址信息
  • NTP start:表示开始进行NTP对时
  • NTP done: 表示NTP对时结束
  • link platform connected:表示成功连接到阿里云平台服务
  • {'ext': '{"fruitList"...:打印云端对图片进行水果检测后返回的检测结果
  • Fruits Detected:表示检测到水果

I (71364) phy: phy_version: 4500, 0cd6843, Sep 17 2020, 15:37:07, 0, 0
Wi-Fi is connecting...
Wi-Fi is connecting...
Wi-Fi is connected
IP: 192.168.3.26
NTP start
NTP done
establish tcp connection with server(host='a1kJJvGN9ko.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[443])
tcp_connect: can only connect from state CLOSED
success to establish tcp, fd=54
link platform connected
capture time : 214
image time : 151
{'ext': '{"fruitList":[{"box":[117.39963,37.268333,267.16675,202.39557],"name":"\u82f9\u679c","score":0.78409535}],"result":"success"}', 'commandName': 'detectFruitsReply', 'commandType': 'haas.faas', 'argInt': 1}
detect: Apple
get response time : 413
Fruits Detected!!!

更多有趣案例请见

HaaS开发框架icon-default.png?t=M1L8https://haas.iot.aliyun.com/solution


推荐阅读
author-avatar
法国警方解放军_847
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有