ESP32-CAM, yerleşik bir kameraya sahip, görüntüleri yakalayabilen ve video akışı yapabilen çok yönlü, düşük maliyetli bir mikrodenetleyicidir. Python’un güçlü görüntü işleme kütüphaneleri ile birleştirildiğinde, gözetim, ev otomasyonu ve robotik gibi çeşitli uygulamalar için nesne algılamasını uygulayabilirsiniz. Bu öğretici, nesne algılamasını gerçekleştirmek için Python ile ESP32-CAM'ı kullanma konusunda size rehberlik edecektir.
Ne İhtiyacınız Olacak
- ESP32-CAM Modülü
- FTDI programcısı (USB-Serial Adaptör)
- Breadboard ve jumper telleri
- Python yüklü Bilgisayarınızda (sürüm 3.6 veya üstü)
- Kütüphaneler: Opencv, numpy ve istekler
- Eğitimli bir model (örneğin, Yolov5, Tensorflow Lite)
1. Adım: ESP32-CAM'ı ayarlama
1. ESP32-CAM'ı Camerawebserver ile flaş
-
ESP32-CAM'ı FTDI programlığınıza bağlayın:
- GND - GND
- 5V - VCC
- U0T - RX
- U0R - TX
- IO0 - GND (yanıp sönen mod için)
-
Arduino IDE'yi açın ve ESP32 kart paketini yükleyin:
- Gidip gelmek Dosya> Tercihler ve URL'yi ekleyin:
https://dl.espressif.com/dl/package_esp32_index.json
- Gidip gelmek Araçlar> Kurul> Kurul Yöneticisi, ESP32'yi arayın ve paketi yükleyin.
- Gidip gelmek Dosya> Tercihler ve URL'yi ekleyin:
-
Camerawebserver örneğini yükleyin:
- Gidip gelmek Dosya> Örnekler> ESP32> Kamera> Camerawebebserver.
- Güncelle
ssid
Vepassword
Wi-Fi kimlik bilgilerinizle değişkenler:const char* ssid = "Your_SSID"; const char* password = "Your_PASSWORD";
- Seçme AI-Thinker ESP32-CAM altında Araçlar> Kurul.
-
Kodu ESP32-CAM'a yükleyin. IO0'ı GND'den ayırın ve sıfırlama düğmesine basın.
2. ESP32-CAM video akışına erişin
- Seri monitörü açın ve baud hızını ayarlayın
115200
. - ESP32-CAM’ın IP adresini seri monitör çıktısında bulun (ör.,
http://192.168.1.100
). - Canlı akışı doğrulamak için bir tarayıcıda IP adresini açın.
2. Adım: Python ortamının kurulması
1. Gerekli kütüphaneleri yükleyin
PIP kullanarak gerekli Python kütüphanelerini yükleyin:
pip install opencv-python numpy requests
2. OpenCV kurulumunu doğrulayın
OpenCV'nin yüklendiğinden emin olmak için aşağıdaki kodu çalıştırın:
import cv2
print(cv2.__version__)
Adım 3: Video akışını yakalamak
ESP32-CAM video akışından çerçeveleri yakalamak için Python kullanın.
Örnek Kodu: Çerçeveleri Yakalama
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()
4. Adım: Nesne algılama ekleme
Yolov5 gibi önceden eğitilmiş bir model kullanarak yakalanan video akışına nesne algılamasını entegre edin.
1. Önceden eğitimli bir modeli indirin
Önceden eğitimli bir Yolov5 modeli kullanabilirsiniz:
- Şuradan indir Yolov5 GitHub Deposu.
2. Örnek Kod: Yolov5 ile nesne algılama
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()
Adım 5: Nesne Tespiti Geliştirme
- Özel Modeller: Roboflow veya Google Colab gibi platformları kullanarak belirli nesneler için kendi Yolov5 modelinizi eğitin.
- Kenar İşleme: Ayakta işleme için Tensorflow Lite gibi hafif modelleri dağıtın.
- Entegrasyon: Tespit sonuçlarını bir sunucuya gönderin veya IoT sistemlerindeki eylemleri tetikleyin.
ESP32-CAM nesne algılamasının uygulamaları
- Ev Güvenliği ve Gözetim Sistemleri
- Yaban hayatı izleme ve izleme
- Fabrika otomasyonu ve kalite kontrolü
- Etkileşimli Robot Projeleri
- Yüz tanıma ile akıllı kapı zili
Sorun giderme
- Akış gecikmesi: Daha pürüzsüz akış için çözünürlüğü veya kare hızını azaltın.
- Bağlantı sorunları: ESP32-CAM ve bilgisayarınızın aynı ağda olduğundan emin olun.
- Model Doğruluğu: Veri kümenizde daha iyi sonuçlar için önceden eğitilmiş modeli ince ayarlayın.
Çözüm
ESP32-CAM'ı Python ile birleştirmek, nesne algılama ve gerçek zamanlı video işleme için güçlü olasılıklar açar. Bu kılavuzu izleyerek, nesne algılamasını akıllı uygulamalar için projelerinize entegre edebilirsiniz. Gelişmiş ve verimli sistemler oluşturmak için farklı modeller ve optimizasyonlarla deney yapın!