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
- ESP32-CAM-Modul
- FTDI -Programmierer (USB-to-Serial-Adapter)
- Breadboard- und Jumper -Drähte
- Python installiert auf Ihrem Computer (Version 3.6 oder später)
- Bibliotheken: OpenCV, Numpy und Anfragen
- Ein ausgebildetes Modell (z. B. Yolov5, Tensorflow Lite)
Schritt 1: Einrichten der ESP32-CAM
1. Flash die ESP32-CAM mit Camerawebserver
-
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)
-
Ö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.
- Gehen zu Datei> Einstellungen und fügen Sie die URL hinzu:
-
Laden Sie das Camerawebserver -Beispiel:
- Gehen zu Datei> Beispiele> ESP32> Kamera> Camerawebserver.
- Aktualisieren Sie die
ssid
Undpassword
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.
-
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
- Öffnen Sie den Serienmonitor und setzen Sie die Baudrate auf
115200
. - Finden Sie die IP-Adresse der ESP32-CAM in der seriellen Monitorausgabe (z. B.,
http://192.168.1.100
). - Ö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:
- Laden Sie es von der herunter Yolov5 Github Repository.
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
- Sicherheit und Überwachungssystem
- Wildtierüberwachung und -verfolgung
- Fabrikautomatisierung und Qualitätskontrolle
- Interaktive Robotikprojekte
- 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!