通过esp32cam拍摄图片上传至PC并通过YOLO进行目标检测

一.通过esp32cam拍摄照片并上传至PC

文章链接: https://blog.csdn.net/qq_62975494/article/details/131559263?spm=1001.2014.3001.5501

使用python作为服务端来接收传输的照片

二.训练自己的数据集

yolo训练自己的数据集: https://blog.csdn.net/qq_62975494/article/details/129786717?spm=1001.2014.3001.5501

三.AutoDL AI算力云的使用

由于自己计算机的算力不足我们可以使用云gpu来进行数据集的训练

1.账号注册

AutoDL官网: https://www.gpuhub.com/home
在这里插入图片描述

2.GPU选取

在这里插入图片描述

一般只有北京剩余机器较多新用户注册会赠送十元抵用券足够进行简单的训练

3.GPU使用

在这里插入图片描述

选择社区镜像搜索yolo选择自己需要的版本最后使用抵用券

4.开机训练

在这里插入图片描述
在这里插入图片描述

然后根据  二.训练自己的数据集中的内容进行配置和标注即可训练
上传数据集时需要将文件压缩后上传

四.数据集的使用


import torch
import bluetooth



# 加载本地模型
device = torch.device("cuda")
model = torch.hub.load('D:/AI/yolov7-main', 'custom',
                       'D:\AI\yolov7-main\weights\last2.pt',
                       source='local', force_reload=False)


while 1:

    if 1:
        # 使用模型
        model = model.to(device)
        # 开始推理
        results = model('./eyes.jpg')
        # 过滤模型
        xmins = results.pandas().xyxy[0]['xmin']
        ymins = results.pandas().xyxy[0]['ymin']
        xmaxs = results.pandas().xyxy[0]['xmax']
        ymaxs = results.pandas().xyxy[0]['ymax']
        class_list = results.pandas().xyxy[0]['class']
        confidences = results.pandas().xyxy[0]['confidence']
        newlist = []
        for xmin, ymin, xmax, ymax, classitem, conf in zip(xmins, ymins, xmaxs, ymaxs, class_list, confidences):
            if classitem == 0 and conf > 0.5:
                newlist.append([int(xmin), int(ymin), int(xmax), int(ymax), conf])
        print(newlist)
得到的newlist就是图片中检测到的目标的坐标和置信度

在这里插入图片描述

model = torch.hub.load('D:/AI/yolov7-main', 'custom',
                       '权重文件路径',
                       source='local', force_reload=False)

使用时将权重路径和模型路径改为自己本地路径

### ESP32-CAM保存捕获图像至本地存储 对于ESP32-CAM设备而言,其内置SPIFFS文件系统可以用于保存捕捉到的图片数据。为了实现这一功能,程序需初始化相机模块配置好相应的参数设置[^1]。 下面展示一段Python风格伪代码来说明如何操作: ```cpp #include "esp_spiffs.h" #include "camera_pins.h" void setup() { Serial.begin(115200); // 初始化摄像头 camera_config_t config; config.ledc_channel = LEDC_CHANNEL_0; config.ledc_timer = LEDC_TIMER_0; config.pin_d0 = Y2_GPIO_NUM; config.pin_d1 = Y3_GPIO_NUM; config.pin_d2 = Y4_GPIO_NUM; config.pin_d3 = Y5_GPIO_NUM; config.pin_d4 = Y6_GPIO_NUM; config.pin_d5 = Y7_GPIO_NUM; config.pin_d6 = Y8_GPIO_NUM; config.pin_d7 = Y9_GPIO_NUM; config.pin_xclk = XCLK_GPIO_NUM; config.pin_pclk = PCLK_GPIO_NUM; config.pin_vsync = VSYNC_GPIO_NUM; config.pin_href = HREF_GPIO_NUM; config.pin_sscb_sda = SIOD_GPIO_NUM; config.pin_sscb_scl = SIOC_GPIO_NUM; config.pin_pwdn = PWDN_GPIO_NUM; config.pin_reset = RESET_GPIO_NUM; config.xclk_freq_hz = 20000000; config.pixel_format = PIXFORMAT_JPEG; if(psramFound()){ config.frame_size = FRAMESIZE_UXGA; config.jpeg_quality = 10; config.fb_count = 2; } else { config.frame_size = FRAMESIZE_SVGA; config.jpeg_quality = 12; config.fb_count = 1; } esp_err_t err = esp_camera_init(&config); if (err != ESP_OK) { Serial.printf("Camera init failed with error 0x%x", err); return; } } void loop() { camera_fb_t * fb = NULL; // 获取一帧画面 fb = esp_camera_fb_get(); if(!fb){ Serial.println("Camera capture failed"); return; } // 打开/创建文件准备写入二进制模式下的JPEG图像 File file = SPIFFS.open("/image.jpg", FILE_WRITE); if (!file) { Serial.println("Failed to open file for writing"); esp_camera_fb_return(fb); // 记得释放framebuffer资源 return; } // 将图像数据写入文件 file.write(fb->buf, fb->len); file.close(); // 返回frame buffer给驱动池以便后续重用 esp_camera_fb_return(fb); Serial.println("Image saved successfully"); delay(5000); // 延迟五秒再重复循环 } ``` 上述代码展示了如何通过Arduino IDE编写ESP32-CAM的应用程序以拍摄照片将之存于内部闪存之中。需要注意的是,在实际部署前应当确保已成功安装必要的库支持以及正确设置了开发环境[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我把把C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值