ESP32 MicroPython AI摄像头应用⑩
- 1、AI摄像头应用
- 2、移动检测(LCD显示)
- 3、实验内容
- 3、参考代码
- 4、实验结果
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