גילוי חפצים עם ESP32-Cam ו- Python

Detecting Objects with the ESP32-CAM and Python

ה- ESP32-CAM הוא בקר מיקרו רב-תכליתי בעלות נמוכה עם מצלמה מובנית, המסוגלת לתפוס תמונות ולהזרמת וידאו. בשילוב עם ספריות עיבוד התמונות החזקות של פייתון, אתה יכול ליישם איתור אובייקטים למגוון יישומים כמו מעקב, אוטומציה ביתית ורובוטיקה. מדריך זה ינחה אתכם באמצעות ESP32-Cam עם Python כדי לבצע איתור אובייקטים.


מה תצטרך

  1. מודול ESP32-CAM
  2. מתכנת FTDI (מתאם USB-to-Serial)
  3. חוטי לחם וגשר
  4. פיתון מותקן במחשב שלך (גרסה 3.6 ואילך)
  5. ספריות: OpenCV, NUMPY ובקשות
  6. מודל מאומן (למשל, YOLOV5, Tensorflow Lite)

שלב 1: הגדרת ה- ESP32-CAM

1. הבזק את ה- ESP32-Cam עם CameraWebserver

  1. חבר את ה- ESP32-CAM למתכנת FTDI שלך:

    • GND ל- GND
    • 5V ל- VCC
    • U0t עד rx
    • U0R ל- TX
    • IO0 ל- GND (למצב מהבהב)
  2. פתח את ה- Arduino IDE והתקן את חבילת הלוח ESP32:

    • לך אל קובץ> העדפות ולהוסיף את כתובת האתר:
      https://dl.espressif.com/dl/package_esp32_index.json
      
    • לך אל כלים> לוח> מנהל מועצות, חפש ESP32 והתקן את החבילה.
  3. טען את הדוגמה CameraWebServer:

    • לך אל קובץ> דוגמאות> ESP32> מצלמה> CameraweBserver.
    • עדכן את ssid וכן password משתנים עם אישורי ה- Wi-Fi שלך:
      const char* ssid = "Your_SSID";
      const char* password = "Your_PASSWORD";
      
    • לִבחוֹר AI-Thinker ESP32-Cam תַחַת כלים> לוח.
  4. העלה את הקוד ל- ESP32-CAM. נתק את IO0 מ- GND ולחץ על כפתור האיפוס.

2. גש לזרם הווידיאו ESP32-CAM

  1. פתח את המסך הסידורי וקבע את קצב הבוד 115200.
  2. מצא את כתובת ה- IP של ESP32-Cam בפלט המסך הסידורי (למשל, http://192.168.1.100).
  3. פתח את כתובת ה- IP בדפדפן כדי לאמת את הזרם החי.

שלב 2: הגדרת סביבת פיתון

1. התקן ספריות נדרשות

התקן את ספריות הפיתון הדרושות באמצעות PIP:

pip install opencv-python numpy requests

2. אמת התקנת OpenCV

הפעל את הקוד הבא כדי להבטיח שהתקנת OpenCV:

import cv2
print(cv2.__version__)

שלב 3: לכידת זרם הווידיאו

השתמש בפייתון כדי ללכוד מסגרות מזרם הווידיאו ESP32-CAM.

קוד דוגמה: לכידת מסגרות

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: הוספת איתור אובייקטים

שלב איתור אובייקטים בזרם הווידיאו שנלכד באמצעות מודל מאומן מראש, כמו YOLOV5.

1. הורד דגם מיומן מראש

אתה יכול להשתמש במודל YOLOV5 מיומן מראש:

2. קוד דוגמה: איתור אובייקטים עם 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()

שלב 5: שיפור גילוי האובייקטים

  • דגמים מותאמים אישית: אימן מודל yolov5 משלך לאובייקטים ספציפיים באמצעות פלטפורמות כמו Roboflow או Google Colab.
  • עיבוד קצה: פרוס דגמים קלים כמו TensorFlow Lite לעיבוד מכשירים.
  • הִשׁתַלְבוּת: שלח תוצאות גילוי לשרת או להפעיל פעולות במערכות IoT.

יישומים של איתור אובייקטים ESP32-CAM

  1. מערכות אבטחה ומעקב ביתי
  2. ניטור ומעקב אחר חיות בר
  3. אוטומציה של מפעל ובקרת איכות
  4. פרויקטים של רובוטיקה אינטראקטיבית
  5. פעמון דלת חכם עם זיהוי פנים

פתרון בעיות

  • חביון זרם: צמצם את הרזולוציה או קצב המסגרת לסטרימינג חלק יותר.
  • בעיות חיבור: ודא ש- ESP32-CAM והמחשב שלך נמצאים באותה רשת.
  • דיוק מודל: כוונן את המודל המאומן מראש לקבלת תוצאות טובות יותר במערך הנתונים שלך.

מַסְקָנָה

שילוב ה- ESP32-Cam עם Python פותח אפשרויות עוצמתיות לגילוי אובייקטים ועיבוד וידיאו בזמן אמת. על ידי ביצוע מדריך זה, אתה יכול לשלב איתור אובייקטים בפרויקטים שלך ליישומים חכמים. התנסו במודלים ואופטימיזציות שונות ליצירת מערכות מתקדמות ויעילות!

השאירו תגובה

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.