如何使用ESP32 您所在的位置:网站首页 人脸识别位置在哪里设置 如何使用ESP32

如何使用ESP32

2024-06-03 05:45| 来源: 网络整理| 查看: 265

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

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

  在这个项目中,我们将使用 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); }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有