genx320_event_mode_deep_buffer.py

# هذا العمل مرخص بموجب ترخيص MIT.
# حقوق النشر (c) 2013-2025 لشركة OpenMV LLC. جميع الحقوق محفوظة.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# يوضح هذا المثال استخدام كاميرا الأحداث genx320 من شركة Prophesee
# باستخدام وضع بث الأحداث مع ذاكرة تخزين مؤقت عميقة جدًا للأحداث من أجل التقاطها.

import csi
import image
import time
# https://micropython-ulab.readthedocs.io/en/latest/index.html
from ulab import numpy as np

# السطح الذي سيُرسم عليه صورة المدرج التكراري (histogram).
img = image.Image(320, 320, image.GRAYSCALE)

# تخزين أحداث الكاميرا
# الشكل: (EVT_res, 6) حيث EVT_res هي دقة الأحداث
# EVT_res: يجب أن تكون من مضاعفات 2 بين 1024 و65536.
# الأعمدة:
# [0]  نوع الحدث
# [1]  الطابع الزمني بالثواني
# [2]  الطابع الزمني بالميلي ثانية
# [3]  الطابع الزمني بالميكروثانية
# [4]  إحداثي X من 0 إلى 319 لـ GENX320
# [5]  إحداثي Y من 0 إلى 319 لـ GENX320
events = np.zeros((32768, 6), dtype=np.uint16)

# تهيئة المستشعر.
csi0 = csi.CSI(cid=csi.GENX320)
csi0.reset()
csi0.ioctl(csi.IOCTL_GENX320_SET_MODE, csi.GENX320_MODE_EVENT, events.shape[0])

clock = time.clock()

while True:
    clock.tick()

    # قراءة حتى 32768 حدثًا من الكاميرا.
    # يُرجع عدد الأحداث الصالحة (0-32768) أو رمز خطأ سالب.
    # لاحظ أن الأحداث القديمة في الذاكرة المؤقتة لا يتم مسحها لتوفير وقت المعالج.
    event_count = csi0.ioctl(csi.IOCTL_GENX320_READ_EVENTS, events)

    # عرض الأحداث كصورة مدرج تكراري (histogram).
    # إذا كانت clear=True، تتم إعادة ضبط الصورة إلى "السطوع" (brightness) قبل الرسم.
    # لكل حدث PIX_ON_EVENT، أضف "التباين" (contrast) إلى قيمة الصندوق (bin)؛
    # ولكل حدث PIX_OFF_EVENT، اطرحه وقم بتقييده إلى [0, 255].
    # إذا كانت clear=False، يتراكم المدرج التكراري عبر عدة استدعاءات.
    img.draw_event_histogram(events[:event_count], clear=True, brightness=128, contrast=16)

    # دفع الصورة إلى ذاكرة jpeg المؤقتة ليقوم الـ IDE بسحبها وعرضها.
    # يقوم الـ IDE بسحب الإطارات من الكاميرا بمعدل أقل بكثير من
    # معدل إطارات الكاميرا المطبوع أدناه.
    img.flush()

    print(event_count, clock.fps())

results matching ""

    No results matching ""