esp-who的环境搭建
本小节来讲述关于猫脸检测代码的烧录和讲解。首先你需要去搭建好esp-who的开发环境,esp-who的开发环境依赖于esp-idf v4.4的发行版。
第一步:
如果你是windows用户,你可以下载一个git版本管理工具去克隆以下的代码仓库。
如果你是linux或者是macos用户,你可以直接打开终端去克隆下面的仓库
git clone https://github.com/espressif/esp-who.git
git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
克隆好上面的这两个仓库后,进入到esp-who的目录:
在终端中运行以下命令:
bash /esp-gitee-tools-path/submodule-update.sh .
这个脚本会自动的拉取esp-who的外部组件。
至此,esp-who的环境就搭建完毕了。
打开克隆好的esp-who的目录,你会看到如下图所示:
components是esp-who的外部组件,default_bin是仓库自带的默认的二进制文件,docs是文档目录 examples是示例目录 img是图片目录,tools是工具目录。
下面我就示例目录里面的cat_face_detection部分讲解一下。
猫脸检测
在猫脸检测的示例里面又有3个子目录
分别是terminal LCD web,也就是将结果分别显示在终端,LCD 网页上面。
如下图所示是猫脸检测的示例支持的开发板。
terminal
首先我们可以用idf.py命令将示例代码跑起来,你可以使用以下的命令:
idf.py set-target esp32s3
idf.py build flash monitor
这个过程中会自动编译 下载到开发板的端口上,将摄像头对猫脸,进行识别,如下图所示:
你可以打开app_main.cpp文件去查看相应的代码
#include "who_camera.h"
#include "who_cat_face_detection.hpp"
static QueueHandle_t xQueueAIFrame = NULL;
extern "C" void app_main()
{
xQueueAIFrame = xQueueCreate(2, sizeof(camera_fb_t *));
register_camera(PIXFORMAT_RGB565, FRAMESIZE_240X240, 2, xQueueAIFrame);
register_cat_face_detection(xQueueAIFrame, NULL, NULL, NULL, true);
}
下面就针对上面的这段代码进行讲解:
😀第一步:示例烧录到开发板后,摄像头开始工作,调用register_camera()的函数,将摄像头的获取的图片 一帧一帧的传输到作为帧的输出流的xQueueAIFrame队列缓冲区。
这个register_camera()函数具体是怎么用的呢?
/**
* @brief Initialize camera
*
* @param pixformat One of
* - PIXFORMAT_RGB565
* - PIXFORMAT_YUV422
* - PIXFORMAT_GRAYSC
* - PIXFORMAT_JPEG
* - PIXFORMAT_RGB888
* - PIXFORMAT_RAW
* - PIXFORMA