Detectarea obiectelor cu ESP32-CAM și Python

Detecting Objects with the ESP32-CAM and Python

ESP32-CAM este un microcontroller versatil, cu costuri reduse, cu o cameră încorporată, capabilă să capteze imagini și să strecoare video. Atunci când este combinat cu bibliotecile puternice de procesare a imaginilor Python, puteți implementa detectarea obiectelor pentru o varietate de aplicații precum supraveghere, automatizare la domiciliu și robotică. Acest tutorial vă va ghida prin utilizarea ESP32-CAM cu Python pentru a efectua detectarea obiectelor.


Ce vei avea nevoie

  1. Modul ESP32-CAM
  2. Programator FTDI (Adaptor USB-to-serial)
  3. Tablă de pâine și jumper
  4. Python instalat pe computerul dvs. (versiunea 3.6 sau mai târziu)
  5. Biblioteci: OpenCV, Numpy și solicitări
  6. Un model instruit (de exemplu, Yolov5, Tensorflow Lite)

Pasul 1: Configurarea ESP32-CAM

1. Flash ESP32-CAM cu camerawebserver

  1. Conectați ESP32-CAM la programatorul dvs. FTDI:

    • GND la GND
    • 5V la VCC
    • U0t la rx
    • U0R la TX
    • Io0 la GND (pentru modul intermitent)
  2. Deschideți IDE Arduino și instalați pachetul de bord ESP32:

    • Du -te la Fișier> Preferințe și adăugați adresa URL:
      https://dl.espressif.com/dl/package_esp32_index.json
      
    • Du -te la Instrumente> Board> Manager de plăci, căutați ESP32 și instalați pachetul.
  3. Încărcați exemplul camerawebserver:

    • Du -te la Fișier> Exemple> ESP32> Cameră> CameraWeBServer.
    • Actualizați ssid şi password Variabile cu acreditările dvs. Wi-Fi:
      const char* ssid = "Your_SSID";
      const char* password = "Your_PASSWORD";
      
    • Selecta AI-gânditor ESP32-CAM sub Instrumente> Board.
  4. Încărcați codul în ESP32-CAM. Deconectați IO0 de la GND și apăsați butonul Resetare.

2. Accesați fluxul video ESP32-CAM

  1. Deschideți monitorul în serie și setați rata de transfer la 115200.
  2. Găsiți adresa IP a ESP32-CAM în ieșirea monitorului în serie (de exemplu, http://192.168.1.100).
  3. Deschideți adresa IP într -un browser pentru a verifica fluxul live.

Pasul 2: Configurarea mediului Python

1. Instalați bibliotecile necesare

Instalați bibliotecile Python necesare folosind PIP:

pip install opencv-python numpy requests

2. Verificați instalarea OpenCV

Rulați următorul cod pentru a vă asigura că este instalat OpenCV:

import cv2
print(cv2.__version__)

Pasul 3: Capturarea fluxului video

Utilizați Python pentru a capta cadre din fluxul video ESP32-CAM.

Exemplu de cod: capturarea cadrelor

import cv2
import requests
import numpy as np

# ESP32-CAM URL
url = "http://192.168.1.100/capture"

while True:
    # Capture image from ESP32-CAM
    img_resp = requests.get(url)
    img_array = np.array(bytearray(img_resp.content), dtype=np.uint8)
    frame = cv2.imdecode(img_array, -1)

    # Display the frame
    cv2.imshow("ESP32-CAM", frame)

    # Exit on pressing 'q'
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cv2.destroyAllWindows()

Pasul 4: Adăugarea detectării obiectelor

Integrați detectarea obiectelor în fluxul video capturat folosind un model pre-instruit, cum ar fi YOLOV5.

1. Descarcă un model pre-instruit

Puteți utiliza un model YOLOV5 pre-instruit:

2. Cod de exemplu: Detectarea obiectelor cu YOLOV5

import cv2
import requests
import numpy as np
import torch

# Load YOLOv5 model
model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)

# ESP32-CAM URL
url = "http://192.168.1.100/capture"

while True:
    # Capture image from ESP32-CAM
    img_resp = requests.get(url)
    img_array = np.array(bytearray(img_resp.content), dtype=np.uint8)
    frame = cv2.imdecode(img_array, -1)

    # Perform object detection
    results = model(frame)
    detections = results.xyxy[0]  # Bounding boxes

    # Draw bounding boxes
    for *xyxy, conf, cls in detections:
        label = f"{model.names[int(cls)]} {conf:.2f}"
        cv2.rectangle(frame, (int(xyxy[0]), int(xyxy[1])), (int(xyxy[2]), int(xyxy[3])), (255, 0, 0), 2)
        cv2.putText(frame, label, (int(xyxy[0]), int(xyxy[1]) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)

    # Display the frame
    cv2.imshow("ESP32-CAM Object Detection", frame)

    # Exit on pressing 'q'
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cv2.destroyAllWindows()

Pasul 5: Îmbunătățirea detectării obiectelor

  • Modele personalizate: Antrenează -ți propriul model YOLOV5 pentru obiecte specifice folosind platforme precum RoboFlow sau Google Colab.
  • Procesarea marginilor: Implementați modele ușoare precum TensorFlow Lite pentru procesarea pe dispozitiv.
  • Integrare: Trimiteți rezultatele detectării către un server sau declanșarea acțiunilor în sistemele IoT.

Aplicații ale detectării obiectelor ESP32-CAM

  1. Sisteme de securitate și supraveghere la domiciliu
  2. Monitorizarea și urmărirea vieții sălbatice
  3. Automatizarea fabricii și controlul calității
  4. Proiecte de robotică interactivă
  5. Smart sonor sonor cu recunoaștere facială

Depanare

  • Latența fluxului: Reduceți rezoluția sau rata de cadru pentru o streaming mai netedă.
  • Probleme de conexiune: Asigurați-vă că ESP32-CAM și computerul dvs. sunt în aceeași rețea.
  • Precizia modelului: Reglați-vă modelul pre-instruit pentru rezultate mai bune pe setul de date.

Concluzie

Combinarea ESP32-CAM cu Python deschide posibilități puternice pentru detectarea obiectelor și procesarea video în timp real. Urmărind acest ghid, puteți integra detectarea obiectelor în proiectele dvs. pentru aplicații inteligente. Experimentați cu diferite modele și optimizări pentru a crea sisteme avansate și eficiente!

Lasă un comentariu

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.