# ESP-WHO [[中文]](./README_CN.md)
ESP-WHO is an image processing development platform based on Espressif chips. It contains development examples that may be applied in practical applications.
## Overview
ESP-WHO provides examples such as Human Face Detection, Human Face Recognition, Pedestrian Detection, QRCode Rocognition etc. You can develop a variety of practical applications based on these examples. ESP-WHO is developed based on [ESP-DL](https://github.com/espressif/esp-dl). It can realize many interesting applications with various peripherals.
## What's new
1. The repository has been fully refactored. It adapts to the new [ESP-DL](https://github.com/espressif/esp-dl)
2. New chip [ESP32-P4](https://www.espressif.com/en/products/socs/esp32-p4) is now supported.
3. Camera and the deep learning model now runs asynchronously, which achieves higher fps.
4. Add [lvgl](https://lvgl.io/)(Light and Versatile Graphics Library) support, feel free to develop your own graphical applications.
5. New pedestrian detect model is added.
Some chip such as esp32 and esp32-s2, and examples such as cat face detection, color detection is not available in this branch currently, we're still working on them. Old branch can be found here.
[old ESP-WHO branch](https://github.com/espressif/esp-who/tree/release/v1.1.0)
## Supported ESP-IDF version
| ESP-IDF
[Release/v5.4](https://github.com/espressif/esp-idf/tree/release/v5.4) | ESP-IDF
[Release/v5.5](https://github.com/espressif/esp-idf/tree/release/v5.5) | ESP-IDF
[Release/v6.0](https://github.com/espressif/esp-idf/tree/release/v6.0) | ESP-IDF
[Release/v6.1](https://github.com/espressif/esp-idf/tree/release/v6.1) |
|-------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|
| :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
## Supported develop board
| Board name | SoC | Supported Features | Photo |
|:----------:|:---:|:-------------------|:-----:|
| [ESP32-P4 Function EV Board](https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32p4/esp32-p4-function-ev-board/user_guide.html) | esp32p4 | :musical_note: Audio
:microphone: Audio Microphone (es8311)
:speaker: Audio Speaker (es8311)
:pager: LCD Display (ek79007, ili9881c, lt8912b)
:floppy_disk: uSD Card
:point_up: Display Touch (gt911)
|
|
| [ESP32-S3-EYE](docs/en/get-started/ESP32-S3-EYE_Getting_Started_Guide.md) | esp32s3 | :musical_note: Audio
:microphone: Audio Microphone
:radio_button: Button
:camera: Camera
:pager: LCD Display (st7789)
:video_game: IMU
:floppy_disk: uSD Card
|
|
| [ESP32-S3-Korvo-2](https://docs.espressif.com/projects/esp-adf/en/latest/design-guide/dev-boards/user-guide-esp32-s3-korvo-2.html) | esp32s3 | :musical_note: Audio
:microphone: Audio Microphone (es7210)
:speaker: Audio Speaker (es8311)
:radio_button: Button
:camera: Camera
:pager: LCD Display (ili9341)
:bulb: LED
:floppy_disk: uSD Card
:point_up: Display Touch (tt21100)
|
|
## Quick Start
All examples of ESP-WHO are stored in [examples](./examples). Enter the corresponding folder and perform the following steps.
### Add environment variable
Linux:
```
export IDF_EXTRA_ACTIONS_PATH=/path_to_esp-who/tools/
echo $IDF_EXTRA_ACTIONS_PATH
```
Win/powershell:
```
$Env:IDF_EXTRA_ACTIONS_PATH="/path_to_esp-who/tools/"
echo $Env:IDF_EXTRA_ACTIONS_PATH
```
Win/cmd:
```
set IDF_EXTRA_ACTIONS_PATH=/path_to_esp-who/tools/
echo %IDF_EXTRA_ACTIONS_PATH%
```
> [!IMPORTANT]
> Make sure the echo command return the correct path.
#### Set the target SOC and the default sdkconfig configuration file.
```
idf.py -DSDKCONFIG_DEFAULTS=sdkconfig.bsp.bsp_name set-target esp32xx
```
Add "" if using powershell.
```
idf.py -DSDKCONFIG_DEFAULTS="sdkconfig.bsp.bsp_name" set-target "esp32xx"
```
> [!NOTE]
> Check the sdkconfig.bsp.* files under each example to see the supported bsp_name.
#### (Optional) Configure sdkconfig options
```
idf.py menuconfig
```
### Build, Flash and monitor
```
idf.py [-p port] flash monitor
```
> [!NOTE]
> - Here [-p port] is optional, if no port is specified, all ports will be scanned.
> - [check port on linux/macos](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/get-started/establish-serial-connection.html#check-port-on-linux-and-macos)
> - [check port on win](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/get-started/establish-serial-connection.html#check-port-on-windows)
## Resources
* If you need to deploy your own model, you can refer to [ESP-DL](https://github.com/espressif/esp-dl), [ESP-DETECTION](https://github.com/espressif/esp-detection).
* For the use of the peripheral interfaces related to the development board, you can refer to [ESP-BSP](https://github.com/espressif/esp-bsp).
* For camera driver related information, please refer to [ESP32_CAMERA](https://github.com/espressif/esp32-camera), [ESP_VIDEO_COMPONENTS](https://github.com/espressif/esp-video-components).
* If you find an error or need new features during use, please check [GitHub Issues](https://github.com/espressif/esp-who/issues) first to ensure that the issue is not submitted repeatedly.