有许多人类识别系统使用签名,指纹,语音,手部几何形状,面部识别等来识别人员,但是除了人脸识别系统。
人脸识别系统不仅可以用于安全目的以识别公共场所中的人员,还可以用于办公室和学校中的出勤目的。
在此项目中,我们将使用ESP32-CAM构建人脸识别系统,该系统还可以通过识别未经授权的人的脸作为 ESP32-CAM安全系统。ESP32-CAM是带有ESP32-S芯片的非常小的相机模块。使用ESP32-CAM模块,我们可以构建人脸识别系统,而无需使用任何复杂的程序和任何额外的组件。也可以使用Raspberry Pi和使用OpenCV的Pi相机来完成面部识别。
ESP32-CAM入门
AI-Thinker ESP32-CAM模块配有ESP32-S芯片,一个非常小的OV2640相机和一个微型SD卡插槽。Micro SD卡插槽可用于存储从相机拍摄的图像或存储文件。该ESP32-CAM模块可广泛用于各种IoT应用中。它可以用作办公室,学校和其他私人区域中的面部检测系统,还可以用作无线监控,QR无线识别和许多其他物联网应用程序。
的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,GRASSCALE
- 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-CAM |
FTDI董事会 |
3.3伏 |
VCC |
地线 |
地线 |
单位 |
德克萨斯州 |
UOT |
接收 |
对ESP32进行编程后,我卸下了FTDI板,并使用7805稳压器将模块连接到3.3V电源。ESP32 cam视频流的设置如下所示:
在Arduino IDE上安装ESP32开发板
ESP32-CAM使用Arduino IDE进行编程。为此,我们必须在Arduino IDE上安装ESP32插件。
要将ESP32开发板安装在Arduino IDE中,请转到文件>首选项
现在,复制下面的链接,并将其粘贴到“ Additional Board Manager URLs ”字段中,如下图所示。然后,单击“确定”按钮:
https://dl.espressif.com/dl/package_esp32_index.json
现在转到工具>董事会>董事会经理
在Board Manager中搜索ESP32并安装“ Espressif Systems的ESP32”。
ESP32相机Web服务器代码
我们已经有ESP32 cam视频流和面部识别的示例代码。使用文件>示例> ESP32> Camera打开ESP32示例,然后打开CameraWebServer示例。
在上传代码之前,您需要输入您的Wi-Fi名称和密码。
const char * ssid =“ WiFi名称”; const char * password =“密码”;
之后,定义ESP相机模块。他们在代码中定义了5个摄像头模块,因此取消注释“ CAMERA_MODEL_AI_THINKER”并注释其余模块。
要上传代码,请将FDTI开发板连接至笔记本电脑,然后选择“ ESP32 Wrover Module ”作为开发板。另外,根据此图片更改其他设置:
在上传代码之前,请按ESP32重置按钮,然后单击上传按钮。
注意:如果在上传代码时遇到错误,请检查IO0是否已连接到GND,并在“工具”菜单中选择了正确的设置。
上载代码后,断开IO0和GND引脚。然后打开串行监视器,并将波特率更改为115200。然后按ESP32重置按钮,它将在串行监视器上打印ESP IP地址和端口号,如下所示。
现在要访问摄像机流,请导航至浏览器并输入ESP IP地址。它将带您到流媒体页面。要启动ESP32 cam视频流,请单击页面底部的``开始流''按钮
您可以通过在流媒体页面上更改“ 分辨率 ”来更改流媒体质量。您也可以通过单击“ 获取静止图像” 按钮来单击图片,但是此代码没有保存图片的选项。
测试完视频流之后,现在我们将测试ESP32凸轮面部检测和识别功能。为此,请通过设置打开面部识别和检测功能:
首先要进行人脸识别,您需要注册一个人脸。您可以通过单击“注册面孔”选项来注册新面孔。需要进行多次尝试来保存脸部。保存面部后,它将面部检测为主题0,现在可以通过识别面部将其用作安全系统。
因此,这就是可以轻松配置ESP相机模块以进行视频流和面部识别的方式。检查以下由ESP32相机拍摄的小型视频片段。
完整的代码在下面给出,也可以从此处下载。