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
- ESP32-CAM-moduuli
- FTDI -ohjelmoija (USB-seri-sovitin)
- Leipälevy- ja hyppyjohdot
- Python asennettu tietokoneellasi (versio 3.6 tai uudempi)
- Kirjastot: OpenCV, Numpy ja pyynnöt
- Koulutettu malli (esim. Yolov5, TensorFlow Lite)
Vaihe 1: ESP32-CAM: n asettaminen
Kello 1. Flash ESP32-CAM CameraWebserverin kanssa
-
Kytke ESP32-CAM FTDI-ohjelmoijaasi:
- GND GND: hen
- 5V VCC: hen
- U0t rx
- U0R TX: lle
- Io0 - Gnd (vilkkuva tilaan)
-
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.
- Mennä jhk Tiedosto> Asetukset ja lisää URL:
-
Lataa CameraWebserver -esimerkki:
- Mennä jhk Tiedosto> Esimerkkejä> ESP32> Kamera> CameraWebserver.
- Päivittää
ssid
japassword
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.
-
Lataa koodi ESP32-CAM: lle. Irrota IO0 GND: stä ja paina nollauspainiketta.
2. Pääsy ESP32-CAM-videovirtaan
- Avaa sarjamonitori ja aseta baud -arvo
115200
. - Löydä ESP32-CAM: n IP-osoite sarjamonitorin lähdössä (esim.
http://192.168.1.100
). - 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:
- Lataa se Yolov5 Github -varasto.
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
- Kodin turvallisuus- ja valvontajärjestelmät
- Villieläinten seuranta ja seuranta
- Tehdasautomaatio ja laadunvalvonta
- Interaktiiviset robotiikkaprojektit
- Ä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!