ESP32-CAM är en mångsidig, billig mikrokontroller med en inbyggd kamera, som kan ta bilder och strömma video. När du kombineras med Pythons kraftfulla bildbehandlingsbibliotek kan du implementera objektdetektering för en mängd olika applikationer som övervakning, hemmautomation och robotik. Denna handledning kommer att leda dig genom att använda ESP32-CAM med Python för att utföra objektdetektering.
Vad du behöver
- ESP32-CAM-modul
- FTDI -programmerare (USB-till-seriell adapter)
- Breadboard och jumpertrådar
- Python installerad på din dator (version 3.6 eller senare)
- Bibliotek: OpenCV, Numpy och förfrågningar
- En tränad modell (t.ex. Yolov5, TensorFlow Lite)
Steg 1: Ställa in ESP32-CAM
1. Flash ESP32-CAM med CameraBebServer
-
Anslut ESP32-CAM till din FTDI-programmerare:
- GND till GND
- 5V till VCC
- U0t till rx
- U0r till tx
- Io0 till GND (för blinkande läge)
-
Öppna Arduino IDE och installera ESP32 -kortpaketet:
- Gå till Fil> preferenser och lägg till url:
https://dl.espressif.com/dl/package_esp32_index.json
- Gå till Verktyg> Board> Boards Manager, Sök efter ESP32 och installera paketet.
- Gå till Fil> preferenser och lägg till url:
-
Ladda CameraWebServer -exemplet:
- Gå till Fil> Exempel> ESP32> CAMERA> CAMERABEBSERVERVER.
- Uppdatera
ssid
ochpassword
Variabler med dina Wi-Fi-referenser:const char* ssid = "Your_SSID"; const char* password = "Your_PASSWORD";
- Välja AI-Thinker ESP32-CAM under Verktyg> Styrelse.
-
Ladda upp koden till ESP32-CAM. Koppla bort IO0 från GND och tryck på återställningsknappen.
2. Åtkomst till ESP32-CAM-videoströmmen
- Öppna seriell monitor och ställ in baudhastigheten på
115200
. - Hitta ESP32-CAM: s IP-adress i seriell monitorutgång (t.ex.
http://192.168.1.100
). - Öppna IP -adressen i en webbläsare för att verifiera liveströmmen.
Steg 2: Ställa in pythonmiljö
1. Installera obligatoriska bibliotek
Installera nödvändiga Python -bibliotek med PIP:
pip install opencv-python numpy requests
2. Verifiera OpenCV -installationen
Kör följande kod för att säkerställa att OpenCV är installerad:
import cv2
print(cv2.__version__)
Steg 3: Fånga videoströmmen
Använd Python för att fånga ramar från videoströmmen ESP32-CAM.
Exempelkod: fånga ramar
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()
Steg 4: Lägga till objektdetektering
Integrera objektdetektering i den fångade videoströmmen med hjälp av en förutbildad modell, till exempel YOLOV5.
1. Ladda ner en förutbildad modell
Du kan använda en förutbildad YOLOV5-modell:
- Ladda ner det från Yolov5 GitHub -förvaret.
2. Exempelkod: Objektdetektering med 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()
Steg 5: Förbättra objektdetektering
- Anpassade modeller: Träna din egen YOLOV5 -modell för specifika objekt med plattformar som Roboflow eller Google Colab.
- Kantbehandling: Distribuera lätta modeller som TensorFlow Lite för bearbetning på enheten.
- Integration: Skicka detekteringsresultat till en server eller utlösa åtgärder i IoT -system.
Tillämpningar av ESP32-CAM-objektdetektering
- Hemsäkerhets- och övervakningssystem
- Djurlivsövervakning och spårning
- Fabriksautomation och kvalitetskontroll
- Interaktiva robotprojekt
- Smart dörrklocka med ansiktsigenkänning
Felsökning
- Strömma latens: Minska upplösningen eller bildhastigheten för smidigare strömning.
- Anslutningsfrågor: Se till att ESP32-CAM och din dator finns i samma nätverk.
- Modell noggrannhet: Finjustera den förutbildade modellen för bättre resultat på ditt datasätt.
Slutsats
Att kombinera ESP32-CAM med Python öppnar upp kraftfulla möjligheter för objektdetektering och realtidsvideobehandling. Genom att följa den här guiden kan du integrera objektdetektering i dina projekt för smarta applikationer. Experimentera med olika modeller och optimeringar för att skapa avancerade och effektiva system!