ESP32-CAM और PYTHON के साथ वस्तुओं का पता लगाना

Detecting Objects with the ESP32-CAM and Python

ESP32-CAM एक अंतर्निहित, कम लागत वाला माइक्रोकंट्रोलर है जिसमें एक अंतर्निहित कैमरा है, जो छवियों को कैप्चर करने और वीडियो स्ट्रीमिंग करने में सक्षम है। जब पायथन के शक्तिशाली छवि प्रसंस्करण पुस्तकालयों के साथ संयुक्त किया जाता है, तो आप विभिन्न प्रकार के अनुप्रयोगों जैसे निगरानी, ​​होम ऑटोमेशन और रोबोटिक्स के लिए ऑब्जेक्ट डिटेक्शन को लागू कर सकते हैं। यह ट्यूटोरियल ऑब्जेक्ट डिटेक्शन करने के लिए पायथन के साथ ESP32-CAM का उपयोग करके आपको मार्गदर्शन करेगा।


आपको क्या चाहिए

  1. Esp32-cam मॉड्यूल
  2. एफटीडीआई प्रोग्रामर (USB-TO-SERIAL ADAPTER)
  3. ब्रेडबोर्ड और जम्पर तार
  4. पायथन स्थापित आपके कंप्यूटर पर (संस्करण 3.6 या बाद में)
  5. पुस्तकालय: Opencv, numpy, और अनुरोध
  6. एक प्रशिक्षित मॉडल (जैसे, Yolov5, TensorFlow Lite)

चरण 1: ESP32-CAM सेट करना

1। कैमरवेबर्स्वर के साथ ESP32-CAM को फ्लैश करें

  1. ESP32-CAM को अपने FTDI प्रोग्रामर से कनेक्ट करें:

    • GND को GND
    • 5V से VCC
    • U0T से RX
    • U0R से TX
    • Io0 to gnd (चमकती मोड के लिए)
  2. Arduino IDE खोलें और ESP32 बोर्ड पैकेज स्थापित करें:

    • जाओ फ़ाइल> प्राथमिकताएँ और URL जोड़ें:
      https://dl.espressif.com/dl/package_esp32_index.json
      
    • जाओ उपकरण> बोर्ड> बोर्ड प्रबंधक, ESP32 के लिए खोजें, और पैकेज स्थापित करें।
  3. Camerawebserver उदाहरण लोड करें:

    • जाओ फ़ाइल> उदाहरण> esp32> कैमरा> कैमरावेबेर्वर.
    • अद्यतन करना ssid और password अपने वाई-फाई क्रेडेंशियल्स के साथ चर:
      const char* ssid = "Your_SSID";
      const char* password = "Your_PASSWORD";
      
    • चुनना Ai-thinker esp32-cam अंतर्गत उपकरण> बोर्ड.
  4. ESP32-CAM पर कोड अपलोड करें। GND से IO0 को डिस्कनेक्ट करें और रीसेट बटन दबाएं।

2। ESP32-CAM वीडियो स्ट्रीम तक पहुँचें

  1. सीरियल मॉनिटर खोलें और बॉड रेट सेट करें 115200.
  2. सीरियल मॉनिटर आउटपुट में ESP32-CAM का IP पता खोजें (जैसे, http://192.168.1.100).
  3. लाइव स्ट्रीम को सत्यापित करने के लिए एक ब्राउज़र में आईपी पता खोलें।

चरण 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: ऑब्जेक्ट डिटेक्शन जोड़ना

एक पूर्व-प्रशिक्षित मॉडल, जैसे कि योलोव 5 का उपयोग करके कैप्चर किए गए वीडियो स्ट्रीम में ऑब्जेक्ट का पता लगाने को एकीकृत करें।

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: ऑब्जेक्ट डिटेक्शन को बढ़ाना

  • कस्टम मॉडल: Roboflow या Google Colab जैसे प्लेटफार्मों का उपयोग करके विशिष्ट वस्तुओं के लिए अपने स्वयं के Yolov5 मॉडल को प्रशिक्षित करें।
  • एज प्रोसेसिंग: ऑन-डिवाइस प्रोसेसिंग के लिए टेंसरफ्लो लाइट जैसे हल्के मॉडल को तैनात करें।
  • एकीकरण: IOT सिस्टम में एक सर्वर या ट्रिगर क्रियाओं को डिटेक्शन परिणाम भेजें।

ESP32-CAM ऑब्जेक्ट डिटेक्शन के अनुप्रयोग

  1. गृह सुरक्षा और निगरानी प्रणाली
  2. वन्यजीव निगरानी और ट्रैकिंग
  3. कारखाना स्वचालन और गुणवत्ता नियंत्रण
  4. इंटरैक्टिव रोबोटिक्स प्रोजेक्ट्स
  5. चेहरे की पहचान के साथ स्मार्ट डोरबेल

समस्या निवारण

  • स्ट्रीम विलंबता: चिकनी स्ट्रीमिंग के लिए रिज़ॉल्यूशन या फ्रेम दर को कम करें।
  • कनेक्शन के मुद्दे: सुनिश्चित करें कि ESP32-CAM और आपका कंप्यूटर एक ही नेटवर्क पर हैं।
  • मॉडल सटीकता: अपने डेटासेट पर बेहतर परिणाम के लिए पूर्व-प्रशिक्षित मॉडल को फाइन-ट्यून करें।

निष्कर्ष

पायथन के साथ ESP32-CAM को मिलाकर ऑब्जेक्ट डिटेक्शन और रियल-टाइम वीडियो प्रोसेसिंग के लिए शक्तिशाली संभावनाएं खोलती हैं। इस गाइड का पालन करके, आप स्मार्ट एप्लिकेशन के लिए अपनी परियोजनाओं में ऑब्जेक्ट डिटेक्शन को एकीकृत कर सकते हैं। उन्नत और कुशल सिस्टम बनाने के लिए विभिन्न मॉडलों और अनुकूलन के साथ प्रयोग!

एक टिप्पणी छोड़ें

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.