ESP32-CAM ve Python ile Nesneleri Algılama

Detecting Objects with the ESP32-CAM and Python

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

  1. ESP32-CAM Modülü
  2. FTDI programcısı (USB-Serial Adaptör)
  3. Breadboard ve jumper telleri
  4. Python yüklü Bilgisayarınızda (sürüm 3.6 veya üstü)
  5. Kütüphaneler: Opencv, numpy ve istekler
  6. Eğitimli bir model (örneğin, Yolov5, Tensorflow Lite)

1. Adım: ESP32-CAM'ı ayarlama

1. ESP32-CAM'ı Camerawebserver ile flaş

  1. 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)
  2. 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.
  3. Camerawebserver örneğini yükleyin:

    • Gidip gelmek Dosya> Örnekler> ESP32> Kamera> Camerawebebserver.
    • Güncelle ssid Ve password 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.
  4. 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

  1. Seri monitörü açın ve baud hızını ayarlayın 115200.
  2. ESP32-CAM’ın IP adresini seri monitör çıktısında bulun (ör., http://192.168.1.100).
  3. 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:

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ı

  1. Ev Güvenliği ve Gözetim Sistemleri
  2. Yaban hayatı izleme ve izleme
  3. Fabrika otomasyonu ve kalite kontrolü
  4. Etkileşimli Robot Projeleri
  5. 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!

Yorum bırak

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.