esp-dl已经实现了猫狗识别的机器学习模块。因此这里只需要调用对应的功能即可。首先添加对应模型的路径。
这里需要将摄像头采集到的图片,喂给模型,让模型判断图片中是否有猫、狗出现。所以先定义两个模型类,用来初始化模型调用。
DogDetect *dogdetect = new DogDetect();
CatDetect *catdetect = new CatDetect();
然后将图片喂给模型,让模型来判断结果。
dl::image::img_t img;
img.data = cam_buff[camera_buf_index];
img.width = BSP_LCD_H_RES;
img.height = BSP_LCD_V_RES;
img.pix_type = dl::image::DL_IMAGE_PIX_TYPE_RGB565;
auto &cat_detect_results = catdetect->run(img);
auto &dog_detect_results = dogdetect->run(img);
最终完整的主函数:
main.doc (11.4 KB)
编译代码会出现空间不足的错误。究其原因display_camera_csi使用默认分区设置,二ESP32P4EYE有较充足的flash,所以使用自定义分区。
# Name, Type, SubType, Offset, Size, Flags
# Note: if you change the phy_init or app partition offset, make sure to change the offset in Kconfig.projbuild
nvs, data, nvs, 0x9000, 24K,
phy_init, data, phy, 0xf000, 4K,
factory, app, factory, 0x010000, 8000K,
再次编译就OK了。

