当前位置:   article > 正文

ESP32 MicroPython AI摄像头应用⑩_esp32 ai

esp32 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()	启动检测网页按钮回调
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/441071
推荐阅读
相关标签
  

闽ICP备14008679号