ESP32 MicroPython AI摄像头应用⑩

news2025/1/10 3:29:59

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.coloradmin.cn/o/1232574.html

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

相关文章

Haclon简介及数据类型

Haclon简介 HALCON是由德国MVtec公司开发的机器视觉算法包,它由一千多个各自独立的函数(算子)构成,其中除了包含各类滤波、色彩以及几何、数学转换、形态学计算分析、图像校正,目标分类辨识、形状搜寻等基本的图像处理…

【SEO学习】专家优化

创建、编辑和推广独特的高质量内容既困难又耗时。如果你真的认真对待搜索引擎优化,但却没有取得预期效果,那么最好聘请一位搜索引擎优化专家。 搜索引擎优化专家会执行以下任务: 代码验证和清理 - 确保代码对搜索引擎友好并符合标准。网站结…

CentOS7安装Docker遇到的问题笔记

笔记/朱季谦 以下是笔者本人学习搭建docker过程当中记录的一些实践笔记,过程当中也遇到了一些坑,但都解决了,就此记录,留作以后再次搭建时可以直接参考。 一、首先,先检查CentOS版本,保证在CentOS7版本以…

Linux:详解(yum的使用、vim编辑器命令集合以及gcc/g++编译器的使用)

Linux 软件包管理器 yum 什么是软件包: 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通…

【opencv】debug报错HEAP CORRUPTION DETECTED

运行至第一句涉及矩阵运算的代码(如cv::multiply)时报错 HEAP CORRUPTION DETECTED: after Normal block (#45034) at 0x000001BDC586F0E0. CRT detected that the application wrote to memory after end of heap buffer.release下不会报错&#xff0…

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

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

(免费领源码)python#flask#mysql旅游数据可视化81319-计算机毕业设计项目选题推荐

摘要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对旅游数据可视化等问题,对旅游数据…

vscode设置前进、后退快捷键

前言 在我们使用vscode编写程序时,经常需要在不同的文件之间跳来跳去,如果只是依靠个人记忆去操作会显得非常不方便。本文介绍如何设置vscode的前进、后退快捷键。 1 vscode设置前进、后退快捷键 点击“设置”图标,然后点击“键盘快捷方式…

注解案例:山寨Junit与山寨JPA

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 上篇讲了什么是注解&am…

一文讲明 网络调试助手的基本使用 NetAssist

我 | 在这里 🕵️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 🏠 工作 | 广州 ⭐ Java 全栈开发(软件工程师) 🎃 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 🏷️ 标签 | 男 自律狂人 目标明确 责任心强 ✈️公…

初刷leetcode题目(7)——数据结构与算法

😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️Take your time ! 😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️…

NameServer源码解析

1 模块入口代码的功能 本节介绍入口代码的功能,阅读源码的时候,很多人喜欢根据执行逻辑,先从入口代码看起。NameServer部分入口代码主要完成命令行参数解析,初始化Controller的功能。 1.1 入口函数 首先看一下NameServer的源码目…

SOLIDWORKS2024钣金及结构系统功能增强

SOLIDWORKS钣金和结构系统是大家比较熟悉的模块了,在新版本中钣金和结构系统功能也做了相应的优化。接下来让我们看看在SOLIDWORKS 2024中钣金和结构系统有哪些功能增强。 首先是钣金方面,我们先来看看新增的槽口延伸功能,在装配体零部件中创…

树莓派的外设开发---树莓派中的wiringPi库

在树莓派中安装wiringPi库 wiringPi库其实已经很熟悉了,在香橙派中大量使用过,这个库中集成了很多使用的功能性函数。 现在在树莓派上也安装wiringPi库: 1. wget https://project-downloads.drogon.net/wiringpi-latest.deb 2. sudo dpkg …

VLAN综合实验

目录 一、实验拓扑 二、实验要求 三、实验步骤 1、交换机配置vlan 1)SW1配置 2)SW2配置 3)SW3配置 2、路由器配置子接口、DHCP 配置结果: PC1-6IP地址 测试 一、实验拓扑 二、实验要求 1、pc1和pc3所在接口为access&a…

STM32 Flash

FLASH简介 Flash是常用的用于存储数据的半导体器件,它具有容量大,可重复擦写,按“扇区/块”擦除、掉电后数据可继续保存的特性。 常见的FLASH主要有NOR FLASH和NAND FLASH两种类型。NOR和NAND是两种数字门电路,可以简单地认为FL…

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

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

基于springboot实现医院信管系统项目【项目源码+论文说明】

基于springboot实现医院信管系统演示 摘要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生&#x…

验证码常见安全问题与测试方法汇总

系统使用验证码主要是意图一般有两个个目的,即辅助身份验证(短信或邮箱验证码)和防止攻击者利用自动化脚本恶意攻击网站(数字,图片,视频,行为式等验证码)。 验证码的生命周期 验证码…

会议剪影 | 思腾合力受邀出席第四届长三角文博会并作主题演讲

以“担当新使命:长三角文化产业的力量”为主题的「第四届长三角国际文化产业博览会」于2023年11月16日-19日在国家会展中心(上海)成功举办。思腾合力作为行业领先的人工智能基础架构解决方案商出席本次盛会。 此次展会的面积首次超过10万平米&#xff0c…