Esineiden havaitseminen ESP32-CAM: n ja Pythonin kanssa

Detecting Objects with the ESP32-CAM and Python

ESP32-CAM on monipuolinen, edullinen mikrokontrolleri, jossa on sisäänrakennettu kamera, joka pystyy kaappaamaan kuvia ja suoratoistovideon. Yhdistettynä Pythonin tehokkaisiin kuvankäsittelykirjastoihin voit toteuttaa esineiden havaitsemisen monille sovelluksille, kuten valvonta, kodin automaatio ja robotiikka. Tämä opetusohjelma opastaa sinua käyttämällä ESP32-CAM: ta Pythonin kanssa esineiden havaitsemiseen.


Mitä tarvitset

  1. ESP32-CAM-moduuli
  2. FTDI -ohjelmoija (USB-seri-sovitin)
  3. Leipälevy- ja hyppyjohdot
  4. Python asennettu tietokoneellasi (versio 3.6 tai uudempi)
  5. Kirjastot: OpenCV, Numpy ja pyynnöt
  6. Koulutettu malli (esim. Yolov5, TensorFlow Lite)

Vaihe 1: ESP32-CAM: n asettaminen

Kello 1. Flash ESP32-CAM CameraWebserverin kanssa

  1. Kytke ESP32-CAM FTDI-ohjelmoijaasi:

    • GND GND: hen
    • 5V VCC: hen
    • U0t rx
    • U0R TX: lle
    • Io0 - Gnd (vilkkuva tilaan)
  2. Avaa Arduino IDE ja asenna ESP32 -levypaketti:

    • Mennä jhk Tiedosto> Asetukset ja lisää URL:
      https://dl.espressif.com/dl/package_esp32_index.json
      
    • Mennä jhk Työkalut> Board> Boards Manager, Etsi ESP32 ja asenna paketti.
  3. Lataa CameraWebserver -esimerkki:

    • Mennä jhk Tiedosto> Esimerkkejä> ESP32> Kamera> CameraWebserver.
    • Päivittää ssid ja password Muuttujat Wi-Fi-käyttöoikeustietojen kanssa:
      const char* ssid = "Your_SSID";
      const char* password = "Your_PASSWORD";
      
    • Valita Ai-ajattelija ESP32-CAM ali Työkalut> lauta.
  4. Lataa koodi ESP32-CAM: lle. Irrota IO0 GND: stä ja paina nollauspainiketta.

2. Pääsy ESP32-CAM-videovirtaan

  1. Avaa sarjamonitori ja aseta baud -arvo 115200.
  2. Löydä ESP32-CAM: n IP-osoite sarjamonitorin lähdössä (esim. http://192.168.1.100).
  3. Avaa IP -osoite selaimessa tarkistaaksesi suoran virran.

Vaihe 2: Python -ympäristön asettaminen

1. Asenna vaadittavat kirjastot

Asenna tarvittavat Python -kirjastot PIP: n avulla:

pip install opencv-python numpy requests

2. Vahvista OpenCV -asennus

Suorita seuraava koodi varmistaaksesi, että OpenCV on asennettu:

import cv2
print(cv2.__version__)

Vaihe 3: Videovirran sieppaaminen

Käytä Pythonia kaappaamaan kehyksiä ESP32-CAM-videovirrasta.

Esimerkki Koodi: Kehysten sieppaaminen

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()

Vaihe 4: Objektin havaitsemisen lisääminen

Integroi objektien havaitseminen kaapattuun videovirtaan käyttämällä esikautettua mallia, kuten Yolov5.

1. Lataa esikaupunki malli

Voit käyttää ennalta koulutettua Yolov5-mallia:

2. Esimerkki koodi: Objektin havaitseminen Yolov5: llä

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()

Vaihe 5: Objektien havaitsemisen parantaminen

  • Mukautetut mallit: Kouluta oma Yolov5 -malli tietyille objekteille käyttämällä alustoja, kuten Roboflow tai Google Colab.
  • Reunankäsittely: Ota käyttöön kevyitä malleja, kuten TensorFlow Lite laitteen käsittelyyn.
  • Integraatio: Lähetä havaitsemistulokset palvelimelle tai laukaise toimia IoT -järjestelmissä.

ESP32-CAM-objektin havaitsemisen sovellukset

  1. Kodin turvallisuus- ja valvontajärjestelmät
  2. Villieläinten seuranta ja seuranta
  3. Tehdasautomaatio ja laadunvalvonta
  4. Interaktiiviset robotiikkaprojektit
  5. Älykäs ovikello kasvojen tunnustamisella

Vianetsintä

  • Virta latenssi: Vähennä tasaisemman suoratoiston resoluutio tai kehysnopeus.
  • Yhteysongelmat: Varmista, että ESP32-CAM ja tietokoneesi ovat samassa verkossa.
  • Mallin tarkkuus: Hienosta ennalta koulutettu malli parempia tuloksia tietojoukossa.

Johtopäätös

ESP32-CAM: n yhdistäminen Pythoniin avaa tehokkaita mahdollisuuksia objektien havaitsemiseen ja reaaliaikaiseen videonkäsittelyyn. Tämän oppaan seuraamalla voit integroida objektien havaitsemisen älykkäisiin sovelluksiin. Kokeile erilaisia ​​malleja ja optimointeja edistyneiden ja tehokkaiden järjestelmien luomiseksi!

Jätä kommentti

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.