ESP32 MicroPython AI摄像头应用⑩

1、AI摄像头应用

我们小车MCU支持AI(人工智能)加速,可以用于加速神经网络计算和信号处理等工作的向量指令 (vector instructions),可以实现高性能的图像识别功能。对于AI功能我们已经移植好MicroPython的库到小车固件,内置有6种模型,分别是:移动检测、人脸识别、人脸检测、猫脸检测、颜色识别、二维码识别。使用内置的模型可以快速实现AI功能开发,下面我们来认识下构建函数和使用方法。

构造函数	说明
mdAI=ai.motionDetection(threshold,displayType)	构造移动检测对象
threshold:触发检测阈值(像素值)
displayType=1显示方式 为LCD显示屏
displayType=2显示方式 为网页方式(需WEB支持)
使用方法	说明
mdAI.start()	启动移动检测
mdAI.read()	读取检测结果,返回检测到的阈值
mdAI.stop()	停止移动检测
构造函数	说明
fdAI=ai.faceDetection(displayType)	构造人脸检测对象
displayType=1显示方式 为LCD显示屏
displayType=2显示方式 为网页方式(需WEB支持)
使用方法	说明
fdAI.start()	启动人脸检测
dat=fdAI.read()	读取人检测结果,最多支持检测两个人脸信息。
没有检测到返回(0),否则返回为元组格式
dat[0]:为返回检测到的人脸数量(0~2)
dat[1],dat[2]:检测矩形左上角x、y坐标
dat[3],dat[4]:检测矩形右下角x、y坐标
dat[5],dat[6]:检测左眼x、y坐标
dat[7],dat[8]:检测右眼x、y坐标
dat[9],dat[10]:检测鼻子x、y坐标
dat[11],dat[12]:检测左嘴角x、y坐标
dat[13],dat[14]:检测右嘴角x、y坐标
检测到两个人数据依次排列下去
fdAI.stop()	停止人脸检测
构造函数	说明
frAI=faceRecognition(displayType)	构造人脸识别对象
displayType=1显示方式 为LCD显示屏
displayType=2显示方式 为网页方式(需WEB支持)
使用方法	说明
frAI.start()	启动人脸识别
frAI.enroll()	录入人脸信息,录入成功返回保存的ID编号,ID范围1~1000。录入失败返回None
frAI.delete(id=0)	删除保存的人脸信息,参数默认为0则删除最后一个ID,否则删除输入的ID。
frAI.recognize()	人脸识别结果
没有识别到返回None,否则返回元组数据
dat[0]:为识别到的人脸ID
dat[1],dat[2]:识别矩形左上角x、y坐标
dat[3],dat[4]:识别矩形右下角x、y坐标
dat[5],dat[6]:识别左眼x、y坐标
dat[7],dat[8]:识别右眼x、y坐标
dat[9],dat[10]:识别鼻子x、y坐标
dat[11],dat[12]:识别左嘴角x、y坐标
dat[13],dat[14]:识别右嘴角x、y坐标
frAI.stop()	停止人脸识别
构造函数	说明
cdAI=ai.colorDetection(color,displayType)	构造颜色识别对象
color:需要识别的颜色
ai.COLOR_RED    红色
ai.COLOR_ORANGE橙色
ai.COLOR_YELLOW黄色
ai.COLOR_CYAN   青色
ai.COLOR_BLUE   蓝色
ai.COLOR_PURPLE 紫色
ai.COLOR_PURPLE 紫色
ai.COLOR_WHITE  白色
ai.COLOR_BLACK  灰色
ai.COLOR_STUDY  学习颜色模式

displayType=1显示方式 为LCD显示屏
displayType=2显示方式 为网页方式(需WEB支持)
使用方法	说明
cdAI.start()	启动颜色识别
dat=cdAI.read()	读取识别结果
没有识别到返回(0),否则返回元组格式为矩形区域上下角坐标
dat[0]:为返回识别到数量(0~5)
dat[1],dat[2]:检测矩形左上角x、y坐标
dat[3],dat[4]:检测矩形右下角x、y坐标
检测到两个以上依次排列下去
cdAI.stop()	停止颜色识别
构造函数	说明
catAI=ai.catDetection(displayType)	构造猫脸检测对象
displayType=1显示方式 为LCD显示屏
displayType=2显示方式 为网页方式(需WEB支持)
使用方法	说明
catAI.start()	启动猫脸检测
dat=catAI.read()	读取猫脸检测结果
没有检测到返回(0),否则返回为元组格式
dat[0]1 为检测到猫脸
dat[1],dat[2]:检测矩形左上角x、y坐标
dat[3],dat[4]:检测矩形右下角x、y坐标
catAI.stop()	停止猫脸检测
构造函数	说明
crAI=ai.codeRecognition()	构造二维码识别对象
使用方法	说明
crAI.start()	启动二维码识别
crAI.read()	读取二维码识别结果
识别到则返回识别结果,否则返回None
crAI.stop()	停止二维码识别
构造函数	说明
hstream=ai.http_stream()	构造AI识别HTTP数据流对象
需要网络支持
使用方法	说明
hstream.set_ok_callable(callback)	设置网页OK按钮回调函数
callback:方法,按下OK后的回调方法
hstream.set_up_callable(callback)	设置网页上键按钮回调函数
callback:方法,按下上键后的回调方法
hstream.set_down_callable(callback)	设置网页下键按钮回调函数
callback:方法,按下下键后的回调方法
hstream.set_left_callable(callback)	设置网页左边按钮回调函数
callback:方法,按下左边键后的回调方法
hstream.set_right_callable(callback)	设置网页右边按钮回调函数
callback:方法,按下右边键后的回调方法
hstream.stream_task()	启动检测网页按钮回调

2、移动检测(LCD显示)

移动检测用于检测摄像头区域物体变化,使用移动检测可以作为物体闯入监控,下面实验我们来学习移动检测的使用。

3、实验内容

使用摄像头采集图像并在LCD显示屏显示,启动AI移动检测模型检测并读取检测到的变化像素大小,如果变化的像素超过检测阈值,图像显示会在左上角显示出绿色实心矩形。并且在调试窗口每隔100毫秒读取检测打印检测到变化像素的大小值。
在移动检测模型中,需要图像层数为两层。所以我们在构造摄像头对象的时候,参数需配置为两层图像。在代码里面,myCam = cam.OV2640(frame=2) 的fram=2表示使用2层图层作为AI移动检测。
构建AI移动检测中的参数threshold = 200表示像素变化为200个单位就触发检测结果,displayType=1表示图像在LCD显示屏显示。参数为displayType=2是表示图像在WEB网页显示,需要网络支持。

在这里插入图片描述

3、参考代码

参考代码文件可以在资料包文件夹“智能小车mpy例程\基础实验\11-AI摄像头实验\01-移动检测-LCD显示”文件夹下的main.py 下面为完整代码内容:

'''
AI摄像头实验-移动检测LCD显示
'''
from machine import Pin,Timer  #导入Pin引脚和Time定时器模块
from lcd import LCD20          #导入2.0寸LCD模块
import cam                     #导入摄像头模块
import time,network
import ai                      #导入AI模块

#颜色值定义,(R,G,B) 0~255代表颜色值
red = (255,0,0)              #红色
green = (0,255,0)            #绿色
blue = (0,0,255)             #蓝色
white = (255,255,255)        #白色
back = (0,0,0)               #黑色

#创建LCD对象 dir 显示方向为竖屏,1、3竖屏,2、4屏横
ld=LCD20()  #默认为竖屏1

# 整屏填充指定颜色
ld.fill(back)
myCam = cam.OV2640(frame=2)    #创建摄像头对象,图层为2层(移动检测需要)

#设置摄像头尺寸240X240
myCam.framesize(cam.LCD240X240) #显示屏对应的分辨率 方便显示
myCam.set_hmirror(0) #设置摄像头水平镜像关闭
'''
创建AI移动检测对象
threshold:检测深度像素点,触发图像指示
displayType: 显示方式为 1-LCD,2-WEB网页显示
'''
myAi = ai.motionDetection( threshold = 200,displayType=1) #深度200,LCD显示方式
myAi.start() #启动AI检测

while True:
    mValue=myAi.read() #读取检测到数据
    print(mValue)      #打印实时检测结果
    time.sleep_ms(100)

4、实验结果

编写程序后点击运行,稍等几秒钟后可以看到LCD显示屏显示图像,在软件调试界面有数据不断打印。没有物体在摄像头前面移动时,调试界面数值很小。在摄像头前面走动时,可以看到图像左上角有绿色矩形显示,查看调试界面数值打印是已经变化阈值很大,已经触发移动检测事件。根据触发数据可以判断有物体移动。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

相关代码及固件:
https://download.csdn.net/download/lu330274924/88549191

智能小车购买链接
技术支持抖音:易驱达Easy Drive Coming
淘宝官方商城:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-18887194911.15.135014bdaKI6mV&id=715385110550

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
esp32micropython是为ESP32系列微控制器提供的Micropython文档。Micropython是一种精简的Python编程语言版本,专门针对嵌入式系统而设计。ESP32是一款功能强大的微控制器,可用于物联网设备、嵌入式系统和机器人等应用esp32micropython文档详细介绍了如何在ESP32上使用Micropython进行开发。它涵盖了Micropython的基础知识、语法和语言特性,以及ESP32的硬件特性和功能。文档包括以下主题: 1. 安装和设置:文档详细说明了如何安装Micropython固件和开发环境,以及如何将固件烧录到ESP32微控制器上。 2. Micropython语法:文档提供了Micropython的语法和语言特性的详细介绍,包括变量、数据类型、条件语句、循环语句和函数等。 3. ESP32硬件功能:文档介绍了ESP32的硬件特性和功能,包括GPIO、串口通信、WiFi和蓝牙等。 4. Micropython库:文档介绍了可以在ESP32上使用的各种Micropython库,包括用于GPIO控制、网络通信和传感器读取等功能。 5. 示例和项目:文档提供了许多实际的示例和项目,展示了如何在ESP32上使用Micropython进行各种应用开发,例如控制LED灯、读取温湿度传感器和连接到云平台等。 通过阅读esp32micropython文档,开发人员可以快速了解如何使用MicropythonESP32上进行开发,并利用ESP32的强大功能去构建各种物联网应用和嵌入式系统。该文档提供了全面的资源和指导,为开发者提供了一个良好的起点,以便探索和开发基于ESP32的项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物联网程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值