ESP32 MicroPython AI摄像头应用⑩

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/153267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openCV教程(三)

文章目录 1 车辆统计项目1.1 背景减除1.2 车辆统计2 特征点检测和匹配2.1 harris角点检测2.2 shi-tomasi角点检测2.3 SIFT关键点检测2.4 SURF特征检测2.5 ORB特征检测3 特征匹配3.1 暴力特征匹配3.2 FLANN特征匹配3.3 图像查找3.3.1 单应性矩阵4 模版匹配4.1 模版匹配4.2 匹配多…

【前端学java】java中的Object类(8)

往期回顾: 【前端学java】JAVA开发的依赖安装与环境配置 (0)【前端学 java】java的基础语法(1)【前端学java】JAVA中的packge与import(2)【前端学java】面向对象编程基础-类的使用 &#xff08…

探索人工智能领域——每日30个名词详解【day4】

目录 前言 正文 总结 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Filotimo__✍️原创,首发于CSDN📚。 📣如需转载,请事先与我联系以…

初步设计报告(框架)

前言 (简述初步设计报告编制的背景、过程及其它有关情况)(内容可根据项目的实际建设内容进行选择) 编制单位资质证明

BUUCTF [BJDCTF2020]一叶障目 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 得到的 flag 请包上 flag{} 提交。来源:https://github.com/BjdsecCA/BJDCTF2020 密文: 下载附件,解压得到一张.png图片。 解题思路: 1、在010 Editor中打开&#x…

填充每个节点的下一个右侧节点指针

题目链接 填充每个节点的下一个右侧节点指针 题目描述 注意点 给定一个 完美二叉树 解答思路 广度优先遍历一层层的遍历二叉树,将每一层节点的next指针都指向右侧节点 代码 class Solution {public Node connect(Node root) {if (root null) {return null;}…

使用drawio的图层构建更强大的图表

drawio中使用图层 drawio是一款强大的图表绘制软件,支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用,则直接输入网址draw.io或者使用drawon(桌案), drawon.cnhttps://www.drawon.cn?useSourcecsdn内部完整的集成了drawio的所有功…

Linux常用命令——builtin命令

在线Linux命令查询工具 builtin 执行shell内部命令 补充说明 builtin命令用于执行指定的shell内部命令,并返回内部命令的返回值。builtin命令在使用时,将不能够再使用Linux中的外部命令。当系统中定义了与shell内部命令相同的函数时,使用…

JavaEE进阶(1)Java EE 简述(Java EE 发展历程、什么是Web开发? Web网站的工作流程、什么是框架?Java EE 框架学习概览)

目录 Java EE 简述 Java EE 发展历程 什么是Web开发? Web网站的工作流程 什么是框架 框架的定义 源于建筑行业的类比 框架的作用 Java EE 框架学习概览 1. Spring 2. Spring Boot 3. Spring MVC 4. Mybatis 框架之间的关系 Java EE 简述 Java EE是Java平台的企…

基于SpringBoot+Mybatis plus+React.js实现条件选择切换搜索功能

笔记/朱季谦 在写React前端逻辑时,经常遇到可以切换不同条件的列表查询功能,例如下边截图这样的,其实,这块代码基本都一个逻辑,可以一次性将实现过程记录下来,待以后再遇到时,直接根据笔记复用…

PgSQL技术内幕-Bitmap Index Scan

PgSQL技术内幕-Bitmap Index Scan 1、简介 Bitmap索引扫描是对索引扫描的一个优化,通过建立位图的方式将原来的随机堆表访问转换成顺序堆表访问。主要分为两点:1)管理每个Bitmap的hash slot没用完时,每个Bitmap代表每个heap页中满…

在VS Code中查看Word, PDF, Excel

文章目录 vscode-pdfExcel Vieweroffice viewerVS Code神级插件 vscode-pdf 这年头连Edge浏览器都支持pdf阅读,那么VS Code不支持显然不太合适。搜索并安装vscode-pdf之后,就可以非常便捷地查看pdf文档了。vscode-pdf是基于pdf.js开发的阅读插件&#x…

计算机毕业设计python企业员工人事管理系统vue

管理员: 1.员工资料管理:查看员工列表,添加职工,修改信息(搜索员工使用模糊查询) 2.部门管理:查看部门列表,修改信息,添加新部门 3.职工考勤管理:添加&#x…

BUUCTF [BJDCTF2020]鸡你太美 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 得到的 flag 请包上 flag{} 提交。来源: https://github.com/BjdsecCA/BJDCTF2020 密文: 下载附件,解压得到两个.gif图片。 第一个gif图片: 第二个gif图片无法打开。…

vue3-响应式核心

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue3-响应式核心 响应式核心 目录 响应式核心 3.1ref() 3.2computed () 3.3 reactive() 3.4 …

【代码随想录】算法训练计划27

回溯 1、39. 组合总和 题目: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的…

【Java】多线程-wait/notify

1、wait和notify Java的多线程中,线程的执行顺序和时间都是不定的。为了控制线程的调度顺序,前面我们引入了join()方法。 但是join()只能在线程执行完后,才能执行其他线程,有没有什么方法可以在线程执行顺序中来调度其他线程呢&…

CTF-PWN-小tips

文章目录 overflowscanfgetreadstrcpystrcat Find string in gdbgdbgdb peda Binary ServiceFind specific function offset in libc手工自动 Find /bin/sh or sh in library手动自动 Leak stack addressFork problem in gdbSecret of a mysterious section - .tlsPredictable …

【腾讯云 HAI域探秘】高性能服务器引领AI革新浪潮:从AI绘画、知识问答到PyTorch图像分类、视频检测的全方位探索

目录 1 HAI(高性能应用服务)简介2 HAI的应用场景2.1 HAI在AI作画中的灵活性与效率2.2 深入探索LLM语言模型的应用与性能2.3 HAI支持的AI模型开发环境与工具 3 基于stable difussio的AI 绘画应用实践3.1 使用AI模型中的stable diffusion模型服务3.2 设置和…

10个好用的Mac数据恢复软件推荐—恢复率高达99%

如果您正在寻找最好的 Mac 数据恢复软件来检索意外删除或丢失的文件,那么这里就是您的最佳选择。 我们理解,当您找不到 Mac 计算机或外部驱动器上保存的一些重要文件时,会感到多么沮丧和绝望。这些文件非常珍贵,无论出于何种原因…