Objekte mit ESP32-Cam und Python erkennen

Detecting Objects with the ESP32-CAM and Python

Die ESP32-CAM ist ein vielseitiger, kostengünstiger Mikrocontroller mit integrierter Kamera, das Bilder aufnehmen und Video streamen. In Kombination mit Pythons leistungsstarken Bildverarbeitungsbibliotheken können Sie die Objekterkennung für eine Vielzahl von Anwendungen wie Überwachung, Heimautomatisierung und Robotik implementieren. In diesem Tutorial führt Sie die Verwendung der ESP32-CAM mit Python, um die Objekterkennung durchzuführen.


Was Sie brauchen werden

  1. ESP32-CAM-Modul
  2. FTDI -Programmierer (USB-to-Serial-Adapter)
  3. Breadboard- und Jumper -Drähte
  4. Python installiert auf Ihrem Computer (Version 3.6 oder später)
  5. Bibliotheken: OpenCV, Numpy und Anfragen
  6. Ein ausgebildetes Modell (z. B. Yolov5, Tensorflow Lite)

Schritt 1: Einrichten der ESP32-CAM

1. Flash die ESP32-CAM mit Camerawebserver

  1. Schließen Sie die ESP32-CAM an Ihren FTDI-Programmierer an:

    • GND zu GND
    • 5 V nach VCC
    • U0T zu RX
    • U0R zu TX
    • IO0 bis GND (für den Blitzmodus)
  2. Öffnen Sie die Arduino -IDE und installieren Sie das ESP32 -Board -Paket:

    • Gehen zu Datei> Einstellungen und fügen Sie die URL hinzu:
      https://dl.espressif.com/dl/package_esp32_index.json
      
    • Gehen zu Tools> Board> Boards ManagerSuchen Sie nach ESP32 und installieren Sie das Paket.
  3. Laden Sie das Camerawebserver -Beispiel:

    • Gehen zu Datei> Beispiele> ESP32> Kamera> Camerawebserver.
    • Aktualisieren Sie die ssid Und password Variablen mit Ihren Wi-Fi-Anmeldeinformationen:
      const char* ssid = "Your_SSID";
      const char* password = "Your_PASSWORD";
      
    • Wählen Ai-Thecher ESP32-CAM unter Tools> Board.
  4. Laden Sie den Code in die ESP32-CAM hoch. Trennen Sie IO0 von GND und drücken Sie die Reset -Taste.

2. Greifen Sie auf den ESP32-CAM-Video-Stream zu

  1. Öffnen Sie den Serienmonitor und setzen Sie die Baudrate auf 115200.
  2. Finden Sie die IP-Adresse der ESP32-CAM in der seriellen Monitorausgabe (z. B., http://192.168.1.100).
  3. Öffnen Sie die IP -Adresse in einem Browser, um den Live -Stream zu überprüfen.

Schritt 2: Einrichten der Python -Umgebung

1. Installieren Sie die erforderlichen Bibliotheken

Installieren Sie die erforderlichen Python -Bibliotheken mit PIP:

pip install opencv-python numpy requests

2. Überprüfen Sie die OpenCV -Installation

Führen Sie den folgenden Code aus, um sicherzustellen, dass OpenCV installiert ist:

import cv2
print(cv2.__version__)

Schritt 3: Erfassen des Videostreams

Verwenden Sie Python, um Frames aus dem ESP32-Cam-Video-Stream zu erfassen.

Beispielcode: Frames erfassen

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

Schritt 4: Hinzufügen von Objekterkennung

Integrieren Sie die Objekterkennung in den erfassten Video-Stream mit einem vorgebildeten Modell wie Yolov5.

1. Laden Sie ein vorgebildetes Modell herunter

Sie können ein vorgebildetes Yolov5-Modell verwenden:

2. Beispielcode: Objekterkennung mit 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()

Schritt 5: Verbesserung der Objekterkennung

  • Benutzerdefinierte Modelle: Trainieren Sie Ihr eigenes YOLOV5 -Modell für bestimmte Objekte mit Plattformen wie Roboflow oder Google Colab.
  • Kantenverarbeitung: Stellen Sie leichte Modelle wie Tensorflow Lite für die Verarbeitung von On-Device-Verarbeitung ein.
  • Integration: Senden Sie Erkennungsergebnisse an einen Server oder auslösen Sie Aktionen in IoT -Systemen.

Anwendungen der ESP32-CAM-Objekterkennung

  1. Sicherheit und Überwachungssystem
  2. Wildtierüberwachung und -verfolgung
  3. Fabrikautomatisierung und Qualitätskontrolle
  4. Interaktive Robotikprojekte
  5. Intelligente Türklingel mit Gesichtserkennung

Fehlerbehebung

  • Stream -Latenz: Reduzieren Sie die Auflösung oder die Bildrate für ein glatteres Streaming.
  • Verbindungsprobleme: Stellen Sie sicher, dass sich die ESP32-CAM und Ihr Computer im selben Netzwerk befinden.
  • Modellgenauigkeit: Fein des vorgebrachten Modells für bessere Ergebnisse in Ihrem Datensatz einstellen.

Abschluss

Die Kombination der ESP32-CAM mit Python eröffnet leistungsstarke Möglichkeiten für die Objekterkennung und Echtzeit-Videoverarbeitung. Wenn Sie diesem Handbuch folgen, können Sie die Objekterkennung in Ihre Projekte für intelligente Anwendungen integrieren. Experimentieren Sie mit verschiedenen Modellen und Optimierungen, um fortschrittliche und effiziente Systeme zu erstellen!

Hinterlasse einen Kommentar

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.