ESP32-CAM este un microcontroller versatil, cu costuri reduse, cu o cameră încorporată, capabilă să capteze imagini și să strecoare video. Atunci când este combinat cu bibliotecile puternice de procesare a imaginilor Python, puteți implementa detectarea obiectelor pentru o varietate de aplicații precum supraveghere, automatizare la domiciliu și robotică. Acest tutorial vă va ghida prin utilizarea ESP32-CAM cu Python pentru a efectua detectarea obiectelor.
Ce vei avea nevoie
- Modul ESP32-CAM
- Programator FTDI (Adaptor USB-to-serial)
- Tablă de pâine și jumper
- Python instalat pe computerul dvs. (versiunea 3.6 sau mai târziu)
- Biblioteci: OpenCV, Numpy și solicitări
- Un model instruit (de exemplu, Yolov5, Tensorflow Lite)
Pasul 1: Configurarea ESP32-CAM
1. Flash ESP32-CAM cu camerawebserver
-
Conectați ESP32-CAM la programatorul dvs. FTDI:
- GND la GND
- 5V la VCC
- U0t la rx
- U0R la TX
- Io0 la GND (pentru modul intermitent)
-
Deschideți IDE Arduino și instalați pachetul de bord ESP32:
- Du -te la Fișier> Preferințe și adăugați adresa URL:
https://dl.espressif.com/dl/package_esp32_index.json
- Du -te la Instrumente> Board> Manager de plăci, căutați ESP32 și instalați pachetul.
- Du -te la Fișier> Preferințe și adăugați adresa URL:
-
Încărcați exemplul camerawebserver:
- Du -te la Fișier> Exemple> ESP32> Cameră> CameraWeBServer.
- Actualizați
ssid
şipassword
Variabile cu acreditările dvs. Wi-Fi:const char* ssid = "Your_SSID"; const char* password = "Your_PASSWORD";
- Selecta AI-gânditor ESP32-CAM sub Instrumente> Board.
-
Încărcați codul în ESP32-CAM. Deconectați IO0 de la GND și apăsați butonul Resetare.
2. Accesați fluxul video ESP32-CAM
- Deschideți monitorul în serie și setați rata de transfer la
115200
. - Găsiți adresa IP a ESP32-CAM în ieșirea monitorului în serie (de exemplu,
http://192.168.1.100
). - Deschideți adresa IP într -un browser pentru a verifica fluxul live.
Pasul 2: Configurarea mediului Python
1. Instalați bibliotecile necesare
Instalați bibliotecile Python necesare folosind PIP:
pip install opencv-python numpy requests
2. Verificați instalarea OpenCV
Rulați următorul cod pentru a vă asigura că este instalat OpenCV:
import cv2
print(cv2.__version__)
Pasul 3: Capturarea fluxului video
Utilizați Python pentru a capta cadre din fluxul video ESP32-CAM.
Exemplu de cod: capturarea cadrelor
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()
Pasul 4: Adăugarea detectării obiectelor
Integrați detectarea obiectelor în fluxul video capturat folosind un model pre-instruit, cum ar fi YOLOV5.
1. Descarcă un model pre-instruit
Puteți utiliza un model YOLOV5 pre-instruit:
- Descărcați -l din YOLOV5 GitHub Depozit.
2. Cod de exemplu: Detectarea obiectelor cu 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()
Pasul 5: Îmbunătățirea detectării obiectelor
- Modele personalizate: Antrenează -ți propriul model YOLOV5 pentru obiecte specifice folosind platforme precum RoboFlow sau Google Colab.
- Procesarea marginilor: Implementați modele ușoare precum TensorFlow Lite pentru procesarea pe dispozitiv.
- Integrare: Trimiteți rezultatele detectării către un server sau declanșarea acțiunilor în sistemele IoT.
Aplicații ale detectării obiectelor ESP32-CAM
- Sisteme de securitate și supraveghere la domiciliu
- Monitorizarea și urmărirea vieții sălbatice
- Automatizarea fabricii și controlul calității
- Proiecte de robotică interactivă
- Smart sonor sonor cu recunoaștere facială
Depanare
- Latența fluxului: Reduceți rezoluția sau rata de cadru pentru o streaming mai netedă.
- Probleme de conexiune: Asigurați-vă că ESP32-CAM și computerul dvs. sunt în aceeași rețea.
- Precizia modelului: Reglați-vă modelul pre-instruit pentru rezultate mai bune pe setul de date.
Concluzie
Combinarea ESP32-CAM cu Python deschide posibilități puternice pentru detectarea obiectelor și procesarea video în timp real. Urmărind acest ghid, puteți integra detectarea obiectelor în proiectele dvs. pentru aplicații inteligente. Experimentați cu diferite modele și optimizări pentru a crea sisteme avansate și eficiente!