OpenMV GENX320 Event Camera Module makes Prophesee GenX320 sensor compatible and ready to be used with compact, Python-powered, machine vision embedded platforms such as OpenMV Cam H7 Plus (recommended) and OpenMV Cam RT1062.
Data are transmitted from the sensor via a low-power and low latency CMOS Parallel Interface (CPI).
Cameras based on STM32 H7 Plus and NXP RT1062 micro-controllers
Streams CD events or event histograms natively from GenX320 sensor
In event mode
Max frame rate on STM32 H7 Plus with 2048 buffers (without visualization) is 1000 fps
Max frame rate on STM32 H7 Plus with 2048 buffers (with visualization) is 500 fps
In histogram mode (Diff3D algorithm)
Max event histogram rate on STM32 H7 Plus is 375 fps
Max event histogram rate on NXP RT1062 is 180 fps
Includes a set of machine learning and image processing algorithms and examples
Small form factor camera expandable via shield add-ons
OpenMV IDE allowing an easy application development in micro-Python using machine vision library
Not supported by Metavision SDK
GenX320 sensor can be configured to stream one of the following data formats:
Sensor biases
Individual sensor biases can be set via sensor.IOCTL_GENX320_SET_BIAS setting
Biases presets can be set via IOCTL_GENX320_SET_BIASES setting
Note that the default OpenMV biases are less sensitive and they are different from the default Metavision biases (and therefore not the one used in the sensor specification)
Event Signal Processing (ESP) filters
AntiFlicker Filter can be configured using IOCTL_GENX320_SET_AFK setting
Low Power Mode (PM2) allowing to reduce consumption whilst maintaining quick wake-up based on scene dynamics can be activated by sensor.sleep function
Further sensor features can be configured by writing/reading
registers (note that the read/write command accepts 16-bit values only)
Plug the OpenMV Cam to USB port on your PC
Start OpenMV IDE
Connect to the camera and install the latest firmware from the menu "Tools / Install the Latest Development Release"
Run ready-to-use examples from the menu "File / Examples / Camera / GenX320"
If you want to do low-level changes in the firmware, it is possible as it is open source.
import sensor import time sensor.reset() # Initializes the sensor. sensor.set_pixformat(sensor.GRAYSCALE) # Must always be grayscale. sensor.set_framesize(sensor.B320X320) # Must always be 320x320. sensor.set_framerate(100) clock = time.clock() while True: clock.tick() img = sensor.snapshot() print(clock.fps())
import sensor import time sensor.reset() sensor.set_pixformat(sensor.GRAYSCALE) # Must always be grayscale. sensor.set_framesize(sensor.B320X320) # Must always be 320x320. sensor.set_framerate(200) sensor.ioctl(sensor.IOCTL_GENX320_SET_BIASES, sensor.GENX320_BIASES_ACTIVE_MARKER) # Applies sensor biases for seeing LEDs only clock = time.clock() while True: clock.tick() img = sensor.snapshot() blobs = img.find_blobs( [(120, 140)], invert=True, pixels_threshold=2, area_threshold=4, merge=True ) for blob in blobs: img.draw_rectangle(blob.rect(), color=(255, 255, 255)) img.draw_cross(blob.cx(), blob.cy(), color=(0, 0, 0)) print(clock.fps())
import sensor
import time
sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE) # Must always be grayscale.
sensor.set_framesize(sensor.B320X320) # Must always be 320x320.
sensor.set_framerate(400)
sensor.ioctl(sensor.IOCTL_GENX320_SET_BIAS, sensor.GENX320_BIAS_DIFF_OFF, 28)
sensor.ioctl(sensor.IOCTL_GENX320_SET_BIAS, sensor.GENX320_BIAS_DIFF_ON, 25)
sensor.ioctl(sensor.IOCTL_GENX320_SET_BIAS, sensor.GENX320_BIAS_FO, 34)
sensor.ioctl(sensor.IOCTL_GENX320_SET_BIAS, sensor.GENX320_BIAS_HPF, 40)
sensor.ioctl(sensor.IOCTL_GENX320_SET_BIAS, sensor.GENX320_BIAS_REFR, 10)
clock = time.clock()
while True:
clock.tick()
img = sensor.snapshot()
print(clock.fps())