L'ESP32-CAM est un microcontrôleur polyvalent à faible coût avec une caméra intégrée, capable de capturer des images et de streaming vidéo. Lorsqu'il est combiné avec de puissantes bibliothèques de traitement d'images de Python, vous pouvez implémenter la détection d'objets pour une variété d'applications telles que la surveillance, la domotique et la robotique. Ce tutoriel vous guidera à l'aide de l'ESP32-cam avec Python pour effectuer la détection d'objets.
Ce dont vous aurez besoin
- Module ESP32-CAM
- Programmeur FTDI (Adaptateur USB à série)
- Fils de planche à pain et de cavalier
- Python installé sur votre ordinateur (version 3.6 ou version ultérieure)
- Bibliothèques: OpenCV, Numpy et demande
- Un modèle formé (par exemple, Yolov5, TensorFlow Lite)
Étape 1: Configuration de l'ESP32-cam
1. Flash l'ESP32-CAM avec CAMERAWEBSERVER
-
Connectez l'ESP32-cam à votre programmeur FTDI:
- GND à GND
- 5V à VCC
- U0t à rx
- U0r à tx
- IO0 à GND (pour le mode clignotant)
-
Ouvrez le Arduino IDE et installez le package de la carte ESP32:
- Aller à Fichier> Préférences et ajouter l'URL:
https://dl.espressif.com/dl/package_esp32_index.json
- Aller à Outils> Board> Gestionnaire des conseils d'administrationRecherchez ESP32 et installez le package.
- Aller à Fichier> Préférences et ajouter l'URL:
-
Chargez l'exemple CamerawebServer:
- Aller à Fichier> Exemples> ESP32> Appareil photo> CAMERAWEBSERVER.
- Mettre à jour le
ssid
etpassword
Variables avec vos informations d'identification Wi-Fi:const char* ssid = "Your_SSID"; const char* password = "Your_PASSWORD";
- Sélectionner AI-Thinker ESP32-cam sous Outils> Board.
-
Téléchargez le code sur ESP32-cam. Débranchez IO0 de GND et appuyez sur le bouton de réinitialisation.
2. Accédez au flux vidéo ESP32-CAM
- Ouvrez le moniteur en série et définissez le taux de bauds sur
115200
. - Trouvez l'adresse IP de l'ESP32-CAM dans la sortie du moniteur série (par exemple,
http://192.168.1.100
). - Ouvrez l'adresse IP dans un navigateur pour vérifier le flux en direct.
Étape 2: Configuration de l'environnement Python
1. Installer les bibliothèques requises
Installez les bibliothèques Python nécessaires à l'aide de PIP:
pip install opencv-python numpy requests
2. Vérifiez l'installation d'OpenCV
Exécutez le code suivant pour vous assurer que OpenCV est installé:
import cv2
print(cv2.__version__)
Étape 3: Capturer le flux vidéo
Utilisez Python pour capturer les cadres du flux vidéo ESP32-cam.
Exemple de code: capture des cadres
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()
Étape 4: Ajout de détection d'objets
Intégrez la détection d'objets dans le flux vidéo capturé à l'aide d'un modèle pré-formé, tel que Yolov5.
1. Télécharger un modèle pré-formé
Vous pouvez utiliser un modèle YOLOV5 pré-formé:
- Téléchargez-le à partir du Référentiel Github Yolov5.
2. Exemple de code: détection d'objets avec 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()
Étape 5: Amélioration de la détection d'objets
- Modèles personnalisés: Formez votre propre modèle YOLOV5 pour des objets spécifiques à l'aide de plates-formes comme Roboflow ou Google Colab.
- Traitement des bords: Déployez des modèles légers comme TensorFlow Lite pour le traitement sur les appareils.
- Intégration: Envoyez des résultats de détection à un serveur ou déclenchez des actions dans les systèmes IoT.
Applications de la détection d'objets ESP32-CAM
- Systèmes de sécurité et de surveillance à domicile
- Surveillance et suivi de la faune
- Automatisation d'usine et contrôle de la qualité
- Projets de robotique interactifs
- Borchette intelligente avec reconnaissance faciale
Dépannage
- Latence de flux: Réduisez la résolution ou la fréquence d'images pour le streaming plus lisse.
- Problèmes de connexion: Assurez-vous que l'ESP32-CAM et votre ordinateur sont sur le même réseau.
- Précision du modèle: Affinez le modèle pré-formé pour de meilleurs résultats sur votre ensemble de données.
Conclusion
La combinaison de l'ESP32-CAM avec Python ouvre de puissantes possibilités de détection d'objets et de traitement vidéo en temps réel. En suivant ce guide, vous pouvez intégrer la détection d'objets dans vos projets pour des applications intelligentes. Expérimentez avec différents modèles et optimisations pour créer des systèmes avancés et efficaces!