O ESP32-CAM é um microcontrolador versátil e de baixo custo com uma câmera embutida, capaz de capturar imagens e streaming de vídeo. Quando combinado com as poderosas bibliotecas de processamento de imagens do Python, você pode implementar a detecção de objetos para uma variedade de aplicativos, como vigilância, automação residencial e robótica. Este tutorial o guiará usando o ESP32-CAM com o Python para executar a detecção de objetos.
O que você precisará
- Módulo ESP32-CAM
- Programador FTDI (Adaptador USB-Série)
- Fios de pão e jumper
- Python instalado no seu computador (versão 3.6 ou mais tarde)
- Bibliotecas: OpenCV, Numpy e solicitações
- Um modelo treinado (por exemplo, Yolov5, tensorflow lite)
Etapa 1: Configurando o ESP32-CAM
1. Flash o Esp32-Cam com CamerawebServer
-
Conecte o ESP32-CAM ao seu programador FTDI:
- GND para GND
- 5V a VCC
- U0t para rx
- U0r para tx
- Io0 para gnd (para o modo piscando)
-
Abra o Arduino IDE e instale o pacote da placa ESP32:
- Vá para Arquivo> Preferências e adicione o URL:
https://dl.espressif.com/dl/package_esp32_index.json
- Vá para Ferramentas> Board> Boards Manager, pesquise esp32 e instale o pacote.
- Vá para Arquivo> Preferências e adicione o URL:
-
Carregue o exemplo de CamerawebServer:
- Vá para Arquivo> Exemplos> Esp32> Câmera> CamerawebServer.
- Atualize o
ssid
epassword
variáveis com suas credenciais Wi-Fi:const char* ssid = "Your_SSID"; const char* password = "Your_PASSWORD";
- Selecione Ai-Thinker ESP32-CAM sob Ferramentas> Placa.
-
Carregue o código para o ESP32-CAM. Desconecte o IO0 do GND e pressione o botão Redefinir.
2. Acesse o fluxo de vídeo esp32-cam
- Abra o monitor serial e defina a taxa de transmissão para
115200
. - Encontre o endereço IP da ESP32-CAM na saída do monitor serial (por exemplo,
http://192.168.1.100
). - Abra o endereço IP em um navegador para verificar a transmissão ao vivo.
Etapa 2: Configuração do ambiente Python
1. Instale as bibliotecas necessárias
Instale as bibliotecas Python necessárias usando PIP:
pip install opencv-python numpy requests
2. Verifique a instalação do OpenCV
Execute o código a seguir para garantir que o OpenCV esteja instalado:
import cv2
print(cv2.__version__)
Etapa 3: captura o fluxo de vídeo
Use Python para capturar quadros do fluxo de vídeo ESP32-CAM.
Exemplo Código: Captura de quadros
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()
Etapa 4: Adicionando detecção de objetos
Integre a detecção de objetos no fluxo de vídeo capturado usando um modelo pré-treinado, como Yolov5.
1. Baixe um modelo pré-treinado
Você pode usar um modelo YOLOV5 pré-treinado:
- Baixar do Repositório Yolov5 Github.
2. Código de exemplo: Detecção de objetos com 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()
Etapa 5: Aprimorando a detecção de objetos
- Modelos personalizados: Treine seu próprio modelo YOLOV5 para objetos específicos usando plataformas como Roboflow ou Google Colab.
- Processamento de borda: Implante modelos leves como o TensorFlow Lite para processamento no dispositivo.
- Integração: Envie os resultados da detecção para um servidor ou acionar ações nos sistemas de IoT.
Aplicações da detecção de objeto ESP32-CAM
- Sistemas de segurança e vigilância domésticos
- Monitoramento e rastreamento da vida selvagem
- Automação de fábrica e controle de qualidade
- Projetos de robótica interativa
- Campainha inteligente com reconhecimento facial
Solução de problemas
- Latência do fluxo: Reduza a resolução ou a taxa de quadros para o streaming mais suave.
- Problemas de conexão: Verifique se o ESP32-CAM e seu computador estão na mesma rede.
- Precisão do modelo: Tune o modelo pré-treinado para obter melhores resultados no seu conjunto de dados.
Conclusão
A combinação do ESP32-CAM com Python abre possibilidades poderosas para detecção de objetos e processamento de vídeo em tempo real. Seguindo este guia, você pode integrar a detecção de objetos em seus projetos para aplicativos inteligentes. Experimente modelos e otimizações diferentes para criar sistemas avançados e eficientes!