如何使用ESP32-CAM构建一个人脸识别系统

news2024/10/6 12:25:46

有许多人识别系统使用签名、指纹、语音、手部几何、人脸识别等来识别人,但除了人脸识别系统。

  人脸识别系统不仅可以用于安全目的来识别公共场所的人员,还可以用于办公室和学校的考勤目的。

  在这个项目中,我们将使用 ESP32-CAM 构建一个人脸识别系统,该系统还可以通过识别未经授权的人的面部来作为 ESP32-CAM 安全系统。ESP32-CAM 是一款非常小的摄像头模组,采用 ESP32-S 芯片。使用 ESP32-CAM 模块,我们可以构建一个人脸识别系统,而无需使用任何复杂的编程和任何额外的组件。

  ESP32-CAM简介

  AI-Thinker ESP32-CAM 模组配备 ESP32-S 芯片、超小尺寸 OV2640 摄像头和 micro SD 卡插槽。Micro SD 卡插槽可用于存储从相机拍摄的图像或存储文件。这款 ESP32-CAM 模块可广泛用于各种物联网应用。它可以用作办公室、学校和其他私人区域的人脸检测系统,也可以用作无线监控、二维码无线识别和许多其他物联网应用。

  ESP32 -CAM模块可以使用 ESP-IDF 或Arduino IDE进行编程。ESP32-CAM 模块也有几个 GPIO 引脚用于连接外部硬件。ESP32-CAM 没有 USB 连接器,因此要对模块进行编程,您需要一个 FTDI 板。

  特征:

  最小的 802.11b/g/n Wi-Fi BT SoC 模块

  低功耗32位CPU,也可服务于应用处理器

  高达 160MHz 时钟速度,综合计算能力高达 600 DMIPS

  内置 520 KB SRAM,外置 4MPSRAM

  支持UART/SPI/I2C/PWM/ADC/DAC

  支持OV2640和OV7670相机,内置闪光灯

  支持图片Wi-Fi上传

  支持TF卡

  支持多种睡眠模式

  嵌入式 Lwip 和 FreeRTOS

  支持STA/AP/STA+AP操作模式

  支持 Smart Config/AirKiss 技术

  支持串口本地和远程固件升级(FOTA)

  规格:

  SPI 闪存:默认 32Mbit

  内存:520KB SRAM+4M PSRAM

  支持TF卡:最大。4G

  支持接口:UART、SPI、I2C、PWM

  图像输出格式:JPEG、BMP、灰度

  IO端口:9

  供电范围:5V

  所需组件

  ESP32-CAM

  FTDI 程序员

  电路原理图

  要构建ESP32 CAM 安全摄像头,我们只需要 ESP32 摄像头模块和 FTDI 编程器对其进行编程。

  ESP32-CAM 没有 USB 连接器,因此您需要 FTDI 编程器将代码上传到 ESP32-CAM,如上图所示。ESP32 的 Vcc 和 GND 引脚与 FTDI 板的 Vcc 和 GND 引脚相连。ESP32 的 Tx 和 Rx 与 FTDI 板的 Rx 和 Tx 相连。

  注意:在上传代码之前,将 IO0 接地。IO0 决定 ESP32 是否处于闪烁模式。当 GPIO 0 连接到 GND 时,ESP32 处于闪烁模式。

  对 ESP32 进行编程后,我卸下了 FTDI 板,并使用 7805 稳压器将模块连接到 3.3V 电源。ESP32 cam 视频流的设置如下所示:

  在 Arduino IDE 上安装 ESP32 Board

  这里 ESP32-CAM 是使用 Arduino IDE 编程的。为此,我们必须在 Arduino IDE 上安装 ESP32 插件。

  要在您的 Arduino IDE 中安装 ESP32 板,请转到File》 Preferences

  现在复制下面的链接并将其粘贴到“ Additional Board Manager URLs ”字段中,如下图所示。然后,单击“确定”按钮:

  现在转到工具》董事会》董事会经理

  在 Board Manager 中搜索 ESP32 并安装“ESP32 by Espressif Systems”。

  ESP32 摄像头网络服务器代码

  我们已经有一个来自ESP32 cam 视频流和人脸识别的示例代码。使用File 》 Examples 》 ESP32 》 Camera打开 ESP32 示例,然后打开 CameraWebServer 示例。

  在上传代码之前,您需要输入您的 Wi-Fi 名称和密码。

  const char* ssid = “WiFi 名称”;

  const char* 密码 = “密码”;

  之后定义ESP 摄像头模块。在代码中,他们定义了 5 个摄像头模块,因此取消注释“CAMERA_MODEL_AI_THINKER”并注释其余模块。

  现在代码已准备好上传。

  要上传代码,请将 FDTI 板连接到您的笔记本电脑并选择“ ESP32 Wrover Module ”作为您的板。另外,根据此图片更改其他设置:

  在上传代码之前,按下 ESP32 重置按钮,然后点击上传按钮。

  注意:如果您在上传代码时遇到错误,请检查 IO0 是否连接到 GND,并且您在工具菜单中选择了正确的设置。

  上传代码后断开 IO0 和 GND 引脚。然后打开串口监视器并将波特率更改为 115200。然后按下 ESP32 重置按钮,它将在串口监视器上打印 ESP IP 地址和端口号,如下所示。

  现在要访问摄像机流,导航到您的浏览器并输入您的 ESP IP 地址。它将带您到流媒体页面。要启动 ESP32 cam 视频流,请单击页面底部的“开始流”按钮

  您可以通过更改流媒体页面上的“分辨率”来更改流媒体质量。您也可以通过单击“获取静止”按钮单击图片,但此代码没有保存图片的选项。

  在测试视频流之后,现在我们将测试ESP32 cam 人脸检测和识别功能。从设置中打开人脸识别和检测功能:

  首先要进行人脸识别,您需要注册人脸。您可以通过单击“注册面孔”选项注册新面孔。需要多次尝试才能保住面子。保存人脸后,它会将人脸检测为主题 0,现在可以通过识别人脸将其用作安全系统。

  因此,这就是 ESP 摄像头模块可以轻松配置用于视频流和面部识别的方式。

#include “esp_camera.h”


#include





// 警告!!!确保您选择了 ESP32 Wrover 模块,


// 或另一个启用了 PSRAM 的板





// 选择相机型号


//#define CAMERA_MODEL_WROVER_KIT


//#define CAMERA_MODEL_ESP_EYE


//#define CAMERA_MODEL_M5STACK_PSRAM


//#define CAMERA_MODEL_M5STACK_WIDE


#define CAMERA_MODEL_AI_THINKER


#include “camera_pins.h”





const char* ssid = "银河-M20";


const char* 密码 = "ac312124";





无效 startCameraServer();





无效设置(){


序列号.开始(115200);


Serial.setDebugOutput(true);


序列号.println();





camera_config_t 配置;


config.ledc_channel = LEDC_CHANNEL_0;


config.ledc_timer = LEDC_TIMER_0;


config.pin_d0 = Y2_GPIO_NUM;


config.pin_d1 = Y3_GPIO_NUM;


config.pin_d2 = Y4_GPIO_NUM;


config.pin_d3 = Y5_GPIO_NUM;


config.pin_d4 = Y6_GPIO_NUM;


config.pin_d5 = Y7_GPIO_NUM;


config.pin_d6 = Y8_GPIO_NUM;


config.pin_d7 = Y9_GPIO_NUM;


config.pin_xclk = XCLK_GPIO_NUM;


config.pin_pclk = PCLK_GPIO_NUM;


config.pin_vsync = VSYNC_GPIO_NUM;


config.pin_href = HREF_GPIO_NUM;


config.pin_sscb_sda = SIOD_GPIO_NUM;


config.pin_sscb_scl = SIOC_GPIO_NUM;


config.pin_pwdn = PWDN_GPIO_NUM;


config.pin_reset = RESET_GPIO_NUM;


config.xclk_freq_hz = 20000000;


config.pixel_format = PIXFORMAT_JPEG;


//用高规格初始化以预分配更大的缓冲区


如果(psramFound()){


config.frame_size = FRAMESIZE_UXGA;


config.jpeg_quality = 10;


config.fb_count = 2;


} 别的 {


config.frame_size = FRAMESIZE_SVGA;


config.jpeg_quality = 12;


config.fb_count = 1;


}





#如果定义(CAMERA_MODEL_ESP_EYE)


pinMode(13,INPUT_PULLUP);


pinMode(14, INPUT_PULLUP);


#万一





// 相机初始化


esp_err_t err = esp_camera_init(&config);


如果(错误!= ESP_OK){


Serial.printf("相机初始化失败,错误 0x%x", err);


返回;


}





sensor_t * s = esp_camera_sensor_get();


//初始传感器垂直翻转,颜色有点饱和


if (s->id.PID == OV3660_PID) {


s->set_vflip(s, 1);//翻转回来


s->set_brightness(s, 1);//稍微提高亮度


s->set_saturation(s, -2);//降低饱和度


}


//降低帧大小以获得更高的初始帧速率


s->set_framesize(s, FRAMESIZE_QVGA);





#如果定义(CAMERA_MODEL_M5STACK_WIDE)


s->set_vflip(s, 1);


s->set_hmirror(s, 1);


#万一





WiFi.begin(ssid, 密码);





而(WiFi.status()!= WL_CONNECTED){


延迟(500);


Serial.print(".");


}


序列号.println("");


Serial.println("WiFi 连接");





startCameraServer();





Serial.print("相机准备好了!使用'http://");


Serial.print(WiFi.localIP());


Serial.println("'要连接");


}





无效循环(){


// 把你的主要代码放在这里,重复运行:


延迟(10000);


}

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

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

相关文章

eclipse for abap下载及配置安装

一,下载eclipse ,地址 https://www.eclipse.org/downloads/download.php?file/oomph/epp/2023-03/R/eclipse-inst-jre-win64.exe 可以选择(大连东软信息学院)端口下载,这样开一些, 二:双击安装,安装FOR…

放弃手动测试,快来了解JMeter压测神器的安装和使用吧~~

目录:导读 引言 jmeter的安装 JMeter是干什么的 JMeter都可以做那些测试 JMeter的使用和组件介绍 下面我们进行XML格式的实战练习 jmeter与postman的区别 JSON的插件 另附视频教程资源 引言 你是否曾经为手动测试而苦恼?是不是觉得手动测试太费…

Windows Java JavaFX Idea 开发环境搭建

博文目录 文章目录 JavaFX 简单说明JavaFX 版本说明JavaFX 与 JDK 的关系JavaFX 与 JDK Modular (JDK 9 模块化系统)JavaFX 模块说明 (JavaFX 20)JavaFX Scene Builder构建 JavaFX 应用程序的两种选择 环境搭建 建议先阅读下方引用的官方文档, 与本章节做相互印证与理解版本选…

Vue 3组件传值 、组件通信

本文采用<script setup />的写法&#xff0c;比options API更自由。那么我们就来说说以下七种组件通信方式&#xff1a; props emit v-model refs provide/inject eventBus vuex/pinia 举个例子 本文将使用下面的演示&#xff0c;如下图所示&#xff1a; 上图中…

【社区图书馆】《新程序员005:开源深度指南 新金融背后的科技力量》

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰来给大家推荐一本书&#xff0c;此书的书名为新程序员005&#xff1a;开源深度指南 & 新金融背后的科技力量&#xff0c;为什么小雅兰今天要给大家推荐这样一本书呢&#xff1f;好啦&#xff0c;现在&#xff0c;…

[python][pcl]python-pcl案例之兔子显示

兔子pcd文件下载&#xff1a;firc.lanzoux.com/iLfSgg749ab# -*- coding: utf-8 -*- # Point cloud library import pcl import pcl.pcl_visualization# Opencv # import opencv import cv2def main():# These are track bar initial settings adjusted to the given pointclou…

牛客网Verilog刷题——VL12

牛客网Verilog刷题——VL12 题目答案 题目 4bit超前进位加法器的逻辑表达式如下&#xff1a; G i G_i Gi​ A i A_i Ai​ B i B_i Bi​&#xff0c; P i P_i Pi​ A i A_i Ai​ ⊕ \oplus ⊕ B i B_i Bi​   和&#xff1a; S i S_i Si​ P i P_i Pi​ ⊕ \oplus ⊕ C i − 1…

DHCP协议详解

DHCP是什么 1.1 DHCP定义 DHCP&#xff08; Dynamic Host Configuration Protocol&#xff0c; 动态主机配置协议&#xff09;定义&#xff1a; 存在于应用层&#xff08;OSI&#xff09; 前身是BOOTP&#xff08;Bootstrap Protocol&#xff09;协议 是一个使用UDP&#xff08…

如何正确选择集体渲染(云渲染)和gpu离线渲染

在数字娱乐领域&#xff0c;渲染是制作高质量影像的关键步骤之一。随着技术的不断发展和应用的广泛普及&#xff0c;渲染方式也在不断演进。目前&#xff0c;集体渲染&#xff08;云渲染&#xff09;和GPU离线渲染是两种比较流行的渲染方式。那么&#xff0c;哪种方式会更快呢&…

一文了解什么是5G

5G是第五代移动网络。它是继1G、2G、3G、4G网络之后的新的全球无线标准。5G 支持一种新型网络&#xff0c;旨在将几乎所有人和所有事物连接在一起&#xff0c;包括机器、物体和设备。 一、前几代移动网络和5G有什么区别 第一代 – 1G 1980 年代&#xff1a;1G 传送模拟语音。…

软件测试标准升级|新版25000标准解读

广电计量 目录 收起 一、覆盖软件产品八大特性的测试依据及准则 二、信息安全测试的关键要点 三、兼容性测试的关键要点 四、功能测试的关键要点 五、性能效率测试的关键要点 六、易用性测试的关键要点 七、可靠性测试的关键要点 八、维护性测试的关键要点 九、可移植…

Linux各文件权限

参考:https://blog.csdn.net/weixin_45423515/article/details/126652740 一、切换root权限 既然root是最大的权限&#xff0c;那么这里就来了解一下如果切换到root用户。 su - //切换成root 这就是切换人的权限&#xff0c;但是大多数情况是root权限不会轻易的分给普通用户…

NIS服务

NIS 文章目录 NIS一、NIS二、简介2.1 NIS的产生2.2 什么是NIS&#xff1f; 三、NIS的相关组件3.1 服务端3.1.1 配置文件3.1.2 主要服务3.1.3 数据库相关指令 3.2 客户端3.2.1 配置文件3.2.2 主要指令 四、NIS环境4.1 NIS所需的软件包4.2 NIS Server (Master/Slave)4.3 NIS Clie…

unity3d---物体加点击事件

目录 1.给需要点击点物体加collider 2.层级面板加EventSystem 3. 相机加Physics Raycaster 4.物体单独响应点击事件 5.控制脚本实现各物体的点击事件 6.点击ui时屏蔽 物体点击事件 1.给需要点击点物体加collider 2.层级面板加EventSystem 3. 相机加Physics Raycaster 2d…

机器学习 Rider数据集分析和预测

介绍数据集 ride_id&#xff1a;乘车ID rideable_type&#xff1a;乘车类型 started_at&#xff1a;开始日期 ended_at &#xff1a;结束日期 start_station_name&#xff1a;开始站的名字 start_station_id&#xff1a;开始站的ID end_station_name&#xff1a;结束站的名字 …

魔百和UNT403G 国科芯片2+8 安卓9.0 免拆机纯净线刷包

固件特点&#xff1a; 1、本固件在UNT403G 盒子上测试可用&#xff0c; 其它盒子请慎 重使用&#xff1b; 2、支持原装遥控器&#xff0c;语音蓝牙遥控器&#xff1b; 3、固件压缩包有刷机教程&#xff0c;请一定仔细阅读。 4、刷机后三网通用&#xff0c;可自由安装应用&#…

NewBing 边栏快捷插件没有了!如何解决?如何脱离浏览器使用 New Bing?

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;蚂蚁集团高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

【移动端网页布局】流式布局 ① ( 流式布局简介 | 百分比布局 / 非固定像素布局 | 根据屏幕尺寸 / 设备类型自动调整网页布局 )

文章目录 一、流式布局简介二、流式布局代码示例 一、流式布局简介 流式布局 又称为 百分比布局 / 非固定像素布局 ; 为 流式布局 中 盒子模型 设置 百分比宽度 , 其大小可以根据屏幕宽度自适应伸缩 , 该盒子没有像素限制 , 内容自动向左右两边填充 ; 流式布局 可以 根据 设备…

蓝库云|究竟什么是ERP?它对企业有什么重要性作用呢

一、什么是ERP ERP全称为Enterprise Resource Planning&#xff0c;即企业资源计划&#xff0c;是一种运用信息技术手段来集成管理企业内部所有资源&#xff0c;协调各项业务、机构、流程和人员&#xff0c;实现高效、协同、合规经营的商业管理软件。ERP系统包括销售、采购、物…

Docker-compose组成|搭建(nginx|tomcat)

Docker-compose组成|搭建&#xff08;nginx|tomcat&#xff09; 一 Docker-Compose二 Docker-Compose安装部署三 YML文件编写注意事项四 docker Compose撰写nginx 镜像五 docker Compose撰写tomcat镜像 一 Docker-Compose 1、Docker-Compose使用场景 我们知道使用一个Dockerfi…