【DigiKey好物畅享】Espressif Systems ESP32-P4-EYE开发板实现猫狗自动投食器——第三篇

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了。