اكتشاف الكائنات مع ESP32-CAM و Python

Detecting Objects with the ESP32-CAM and Python

يعد ESP32-CAM متحكم متعدد التكلفة منخفض التكلفة مع كاميرا مدمجة ، قادر على التقاط الصور ودفق الفيديو. عندما يتم دمجها مع مكتبات Python القوية لتجهيز الصور ، يمكنك تنفيذ اكتشاف الكائنات لمجموعة متنوعة من التطبيقات مثل المراقبة وأتمتة المنزل والروبوتات. سيوجهك هذا البرنامج التعليمي من خلال استخدام 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.

  1. قم بتوصيل ESP32-CAM بمبرمج FTDI الخاص بك:

    • GND إلى GND
    • 5V إلى VCC
    • U0T إلى RX
    • U0R إلى تكساس
    • IO0 إلى GND (لوضع الوميض)
  2. افتح Arduino IDE وقم بتثبيت حزمة لوحة ESP32:

    • اذهب إلى ملف> تفضيلات وأضف عنوان URL:
      https://dl.espressif.com/dl/package_esp32_index.json
      
    • اذهب إلى أدوات> لوحة> مدير المجالس، ابحث عن ESP32 ، وتثبيت الحزمة.
  3. قم بتحميل مثال Cameraweberver:

    • اذهب إلى ملف> أمثلة> ESP32> الكاميرا> Camerawebserver.
    • تحديث ssid و password المتغيرات مع بيانات اعتماد Wi-Fi الخاصة بك:
      const char* ssid = "Your_SSID";
      const char* password = "Your_PASSWORD";
      
    • يختار AI-Hinker 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. تثبيت المكتبات المطلوبة

قم بتثبيت مكتبات Python اللازمة باستخدام PIP:

pip install opencv-python numpy requests

2. تحقق من تثبيت OpenCV

قم بتشغيل الكود التالي لضمان تثبيت OpenCV:

import cv2
print(cv2.__version__)

الخطوة 3: التقاط دفق الفيديو

استخدم Python لالتقاط الإطارات من دفق الفيديو 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 لمعالجة الجهاز.
  • اندماج: أرسل نتائج الكشف إلى خادم أو إجراء إجراءات في أنظمة إنترنت الأشياء.

تطبيقات الكشف عن كائن 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.