Objektumok észlelése az ESP32-CAM és a Python segítségével

Detecting Objects with the ESP32-CAM and Python

Az ESP32-CAM egy sokoldalú, olcsó mikrovezérlő, beépített kamerával, képes képeket rögzíteni és streaming videókat készíteni. A Python hatékony képfeldolgozó könyvtáraival kombinálva az objektumok észlelését különféle alkalmazásokhoz, például megfigyelés, otthoni automatizálás és robotika esetén megvalósíthatja. Ez az oktatóanyag vezeti Önt az ESP32-CAM Python használatával az objektum-észlelés végrehajtásához.


Mire lesz szüksége

  1. ESP32-CAM modul
  2. FTDI programozó (USB-sorozat-adapter)
  3. Kenyérlemez és jumper vezetékek
  4. Python telepítve a számítógépen (3.6 vagy újabb verzió)
  5. Könyvtárak: OpenCV, numpy és kérések
  6. Képzett modell (pl. Yolov5, Tensorflow Lite)

1. lépés: Az ESP32-CAM beállítása

1. Flash az ESP32-CAM-ot CAMERAWEBSERVER segítségével

  1. Csatlakoztassa az ESP32-CAM-ot az FTDI programozójához:

    • GND -t a GND -hez
    • 5 V -os VCC
    • U0T - RX
    • U0r to tx
    • IO0 - GND (villogó módhoz)
  2. Nyissa meg az Arduino IDE -t, és telepítse az ESP32 tábla csomagot:

    • Elindul Fájl> Preferenciák és adja hozzá az URL -t:
      https://dl.espressif.com/dl/package_esp32_index.json
      
    • Elindul Eszközök> Táblák> Táblákkezelő, Keresse meg az ESP32 -t, és telepítse a csomagot.
  3. Töltse be a Camerawebserver példát:

    • Elindul Fájl> Példák> ESP32> Kamera> CAMERAWEBSERVER.
    • Frissítse a ssid és password Változók a Wi-Fi hitelesítő adataival:
      const char* ssid = "Your_SSID";
      const char* password = "Your_PASSWORD";
      
    • Válasszon Ai-thinker ESP32-CAM alatt Eszközök> Board.
  4. Töltse fel a kódot az ESP32-CAM-ra. Válasszuk le az IO0 -t a GND -ből, és nyomja meg a visszaállítás gombot.

2.

  1. Nyissa meg a soros monitorot, és állítsa be az adatátviteli sebességet 115200.
  2. Keresse meg az ESP32-CAM IP-címét a soros monitor kimenetében (pl. http://192.168.1.100).
  3. Nyissa meg az IP -címet egy böngészőben az élő stream ellenőrzéséhez.

2. lépés: Python környezet beállítása

1. Telepítse a szükséges könyvtárakat

Telepítse a szükséges Python könyvtárakat a PIP használatával:

pip install opencv-python numpy requests

2. Ellenőrizze az OpenCV telepítését

Futtassa a következő kódot az OpenCV telepítésének biztosítása érdekében:

import cv2
print(cv2.__version__)

3. lépés: A videó stream rögzítése

A Python segítségével rögzítse a kereteket az ESP32-CAM videó streamből.

Példa kód: Keretek rögzítése

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. lépés: Objektum -észlelés hozzáadása

Integrálja az objektumok észlelését a rögzített video streambe egy előre kiképzett modell segítségével, például a Yolov5-rel.

1. Töltse le az előzetes képzett modellt

Használhat egy előre kiképzett Yolov5 modellt:

2. Példa kód: Objektum -észlelés Yolov5 -rel

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()

5. lépés: Az objektum észlelésének javítása

  • Egyedi modellek: Képzze meg saját YoloV5 modelljét bizonyos objektumokhoz olyan platformok segítségével, mint a Roboflow vagy a Google Colab.
  • Edge feldolgozása: Telepítsen olyan könnyű modelleket, mint a Tensorflow Lite az eszköz feldolgozásához.
  • Integráció: Küldje el az észlelési eredményeket egy szerverre, vagy indítson el műveleteket az IoT rendszerekben.

Az ESP32-CAM objektumdetektálás alkalmazása

  1. Otthoni biztonsági és megfigyelő rendszerek
  2. Vadon élő állatok megfigyelése és nyomon követése
  3. Gyári automatizálás és minőség -ellenőrzés
  4. Interaktív robotikai projektek
  5. Okos ajtócsengő arcfelismeréssel

Hibaelhárítás

  • Patak késés: Csökkentse a felbontást vagy a képkocka sebességét a simább streaminghez.
  • Csatlakozási problémák: Győződjön meg arról, hogy az ESP32-CAM és a számítógép ugyanazon a hálózaton van.
  • Modell pontosság: Finomítsa be az előre kiképzett modellt az adatkészlet jobb eredményeinek elérése érdekében.

Következtetés

Az ESP32-CAM és a Python kombinálása erőteljes lehetőségeket nyit az objektumok észlelésére és a valós idejű videofeldolgozásra. Az útmutató követésével intelligens alkalmazásokhoz integrálhatja az objektumok észlelését a projektekbe. Kísérletezzen különböző modellekkel és optimalizálásokkal a fejlett és hatékony rendszerek létrehozásához!

Hagyj egy megjegyzést

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.