De ESP32-CAM is een veelzijdige, goedkope microcontroller met een ingebouwde camera, in staat om afbeeldingen te maken en video te streamen. In combinatie met de krachtige beeldverwerkingsbibliotheken van Python, kunt u objectdetectie implementeren voor een verscheidenheid aan applicaties zoals surveillance, thuisautomatisering en robotica. Deze zelfstudie zal u begeleiden door de ESP32-CAM met Python te gebruiken om objectdetectie uit te voeren.
Wat u nodig hebt
- ESP32-cam module
- FTDI -programmeur (USB-naar-serial adapter)
- Breadboard en jumper draden
- Python geïnstalleerd Op uw computer (versie 3.6 of later)
- Bibliotheken: OpenCV, Numpy en verzoeken
- Een getraind model (bijv. Yolov5, TensorFlow Lite)
Stap 1: het instellen van de ESP32-CAM
1. Flits de ESP32-CAM met Camerawebserver
-
Verbind de ESP32-CAM met uw FTDI-programmeur:
- GND naar GND
- 5V naar VCC
- U0t naar rx
- U0r naar tx
- IO0 naar GND (voor knippermodus)
-
Open de Arduino IDE en installeer het ESP32 -bordpakket:
- Gaan naar Bestand> Voorkeuren en voeg de URL toe:
https://dl.espressif.com/dl/package_esp32_index.json
- Gaan naar Tools> Board> Boards Manager, zoek naar ESP32 en installeer het pakket.
- Gaan naar Bestand> Voorkeuren en voeg de URL toe:
-
Laad het voorbeeld van de cameraweberver:
- Gaan naar Bestand> Voorbeelden> ESP32> Camera> CamerAWEBServer.
- Update de
ssid
Enpassword
Variabelen met uw Wi-Fi-referenties:const char* ssid = "Your_SSID"; const char* password = "Your_PASSWORD";
- Uitkiezen AI-DENTER ESP32-CAM onder Tools> Board.
-
Upload de code naar de ESP32-CAM. Koppel IO0 los van GND en druk op de resetknop.
2.
- Open de seriële monitor en stel het baudrate in op
115200
. - Zoek het IP-adres van de ESP32-CAM in de seriële monitoruitvoer (bijv.
http://192.168.1.100
). - Open het IP -adres in een browser om de livestream te verifiëren.
Stap 2: Python -omgeving opzetten
1. Installeer de vereiste bibliotheken
Installeer de benodigde Python -bibliotheken met behulp van PIP:
pip install opencv-python numpy requests
2. Controleer OpenCV -installatie
Voer de volgende code uit om ervoor te zorgen dat OpenCV is geïnstalleerd:
import cv2
print(cv2.__version__)
Stap 3: De videostream vastleggen
Gebruik Python om frames van de ESP32-CAM-videostream vast te leggen.
Voorbeeldcode: frames vastleggen
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()
Stap 4: Objectdetectie toevoegen
Integreer objectdetectie in de vastgelegde videostream met behulp van een vooraf opgeleid model, zoals YOLOV5.
1. Download een vooraf opgeleid model
U kunt een vooraf getraind YOLOV5-model gebruiken:
- Download het van de Yolov5 GitHub Repository.
2. Voorbeeldcode: objectdetectie met 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()
Stap 5: Verbetering van het objectdetectie
- Aangepaste modellen: Train uw eigen YOLOV5 -model voor specifieke objecten met platforms zoals Roboflow of Google Colab.
- Randverwerking: Implementeer lichtgewicht modellen zoals TensorFlow Lite voor verwerking bij de apparaten.
- Integratie: Stuur detectieresultaten naar een server of acties acties in IoT -systemen.
Toepassingen van ESP32-cam objectdetectie
- Thuisbeveiliging en bewakingssystemen
- Wildlife monitoring en tracking
- Fabrieksautomatisering en kwaliteitscontrole
- Interactieve robotica -projecten
- Slimme deurbel met gezichtsherkenning
Problemen oplossen
- Stream latentie: Verminder de resolutie of framesnelheid voor soepelere streaming.
- Verbindingsproblemen: Zorg ervoor dat de ESP32-CAM en uw computer zich op hetzelfde netwerk bevinden.
- Modelnauwkeurigheid: Stel het vooraf opgeleide model aan voor betere resultaten op uw dataset.
Conclusie
Het combineren van de ESP32-CAM met Python opent krachtige mogelijkheden voor objectdetectie en realtime videoverwerking. Door deze handleiding te volgen, kunt u objectdetectie integreren in uw projecten voor slimme applicaties. Experimenteer met verschillende modellen en optimalisaties om geavanceerde en efficiënte systemen te creëren!