genx320_event_mode_high_speed.py

# この作品はMITライセンスの下で提供されています。
# Copyright (c) 2013-2025 OpenMV LLC. 全著作権所有。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# この例では、Prophesee製のgenx320イベントカメラを
# イベントストリーミングモードを使用します。
#
# この例には、非常に高速に動作させるためフレームバッファの可視化がありません。

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

# カメラのイベントを格納します
# 形状: (EVT_res, 6)。EVT_resはイベント解像度です
# EVT_res: 1024から65536の間の2のべき乗である必要があります。
# 列:
# [0] イベントタイプ
# [1] 秒単位のタイムスタンプ
# [2] ミリ秒単位のタイムスタンプ
# [3] マイクロ秒単位のタイムスタンプ
# [4] GENX320でのX座標 0~319
# [5] GENX320でのY座標 0~319
events = np.zeros((2048, 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()
t = time.ticks_us()

i = 0
while True:
    clock.tick()
    t1 = time.ticks_us()
    diff = time.ticks_diff(t1, t)
    t = t1
    i += 1

    # カメラから最大2048件のイベントを読み取ります。
    # 有効なイベント数(0~2048)または負のエラーコードを返します。
    # CPU時間を節約するため、バッファ内の古いイベントはクリアされません。
    event_count = csi0.ioctl(csi.IOCTL_GENX320_READ_EVENTS, events)

    # イベントデータ処理のパフォーマンスに影響しないよう、イベントレート出力を
    # 間引きます。IDEへの統計出力の送信オーバーヘッドは、高イベントレート時には
    # 無視できないほど大きくなることがあります。
    if not i % 10:
        print(f'{event_count} events\t{clock.fps()} fps\t{diff} us')

results matching ""

    No results matching ""