A polished, open-source desktop app for event cameras — built on OpenEB v5.2.0.
Real-time visualization · camera control · recording & playback · calibration · 25 algorithms · customizable themes
English · 简体中文
Event cameras — also called neuromorphic vision sensors — don't capture frames; they report per-pixel brightness changes at microsecond resolution, with high dynamic range and low power. Working with that stream usually means vendor-specific tools plus custom scripts. EB plus — built on OpenEB, the open-source core of the Prophesee Metavision SDK — is one desktop workbench for the whole workflow:
- One GUI for three vendors — Prophesee, CenturyArks and iniVation devices share one device list (see the camera table)
- The complete workflow — live view, camera control, recording & playback, chessboard calibration, HDF5 / CSV / AVI export
- 25 algorithms built in — noise filtering, optical flow, tracking, XYT 3D point cloud, deep-learning event-to-video (E2VID family) and DL dense optical flow
- Windows and macOS, not just Ubuntu — EB plus builds on OpenEB with Windows 11 and macOS support, CI-tested on all three platforms on every push
- Fully open source — MIT-licensed original code on the Apache-2.0 OpenEB SDK; no account, registration or license key
| Vendor | Models | Live support |
|---|---|---|
| Prophesee | any camera exposed by the installed Metavision HAL plugin | full — events, biases, ROI, anti-flicker / trail filter / ERC, triggers, RAW recording |
| CenturyArks | SilkyEvCam — natively: the HAL plugin built from the vendored OpenEB registers the CenturyArks USB IDs alongside Prophesee's (no separate vendor plugin needed) | same stack as Prophesee |
| iniVation | DAVIS346, DVXplorer — hardware-tested; DAVIS240A/B/C, DAVIS640, CDAVIS — follow the reference implementation, not yet hardware-tested | preliminary — events, full bias control (Auto Bias included), hardware ROI (DAVIS), IMU attitude view, APS frame preview, AEDAT4 recording |
File playback needs no camera: RAW files, plus the event streams of AEDAT4 and ALPDATA recordings.
iniVation support is optional at build time — without libusb-1.0 development files the build simply excludes it. One-time USB setup and per-model notes: wiki/Getting-Started.md.
# Build
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -- -j$(nproc)
# Run (the launcher sets all required env vars)
./run.shThat's it. The launcher handles Wayland compatibility, HAL plugin paths, and OpenGL backend selection automatically.
Requirements: Ubuntu 26.04 · GCC 15 · Qt 6 · OpenCV 4 — the reference environment. Windows 11 (MSVC) and macOS (Apple Silicon) are also supported and CI-tested; see the per-platform build guides: Linux · Windows 11 · macOS.
Env vars & camera vendor paths
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:-}:/usr/local/lib"
export HDF5_PLUGIN_PATH="/usr/local/lib/hdf5/plugin"
# The plugin built from the vendored OpenEB drives BOTH Prophesee and
# CenturyArks (SilkyEvCam) cameras - no separate vendor plugin needed:
export MV_HAL_PLUGIN_PATH=/usr/local/lib/metavision/hal/plugins
export QT_QPA_PLATFORM=xcb # Wayland renders black for QOpenGLWidget
export QSG_RHI_BACKEND=opengl # Qt 6 may default to Vulkan
./build/gui/gui_for_openebThe plugin at /usr/local/lib/metavision/hal/plugins (built from the
vendored OpenEB) registers both the Prophesee and the CenturyArks USB IDs,
so one path covers both vendors. Only point elsewhere if you deliberately
installed a vendor-distributed plugin instead.
- OpenGL-accelerated rendering with letterboxed viewport
- 7 frame modes: Integration, Diff, Histogram, Time Decay, Contrast Map, Periodic, On-Demand
- 4 color palettes: Dark, Light, CoolWarm, Gray
- Live statistics: event rate, ON/OFF ratio, FPS, timestamp
- Biases — all HAL biases with slider + spinbox, save/load
.biasfiles, Auto Bias rate-band control - ROI — multi-rectangle ROI / RONI, drag-to-select on the display
- ESP — Anti-Flicker, Trail Filter, Event Rate Control
- Trigger — Trigger In (per-channel) + Trigger Out
All panels degrade gracefully when the device lacks the corresponding HAL facility (e.g. the four hardware panels auto-disable during file playback).
- RAW recording from live cameras (inivation cameras: live preview + biases only)
- File playback with speed control, seek, pause/resume
- File cutter — extract a time range from an event file
- Convert between RAW, HDF5, and CSV
- Export events to AVI video (configurable FPS, accumulation, quality, color mode)
4 stackable stages applied in a thread-safe pipeline: Polarity Filter, Polarity Invert, Flip X, Flip Y. Toggled from the sidebar.
EB plus ships 21 self-developed algorithms plus 4 OpenEB filter stages, all registered in a single AlgoBridge registry.
| Category | Examples |
|---|---|
| Filtering | Hot Pixel Filter, Background Mask |
| Motion | Sparse Optical Flow (4 modes), Direction Selective, EIS / Optical Gyro |
| Detection | Blob Detector, Corner Detector (Harris/FAST/AGAST), Line Segment (ELiSeD) |
| Tracking | Object Tracker (RCT, jAER-aligned), Hough Circle, Hough Line |
| Reconstruction | Event-to-Video — E2VID / E2VID+ / FireNet+ / HyperE2VID (DL modes), BardowVariational, InteractingMaps |
| DL Optical Flow | Dense Optical Flow (DL) — EVFlowNet, HSV-coded dense flow |
| Analytics | Frequency Detector, Frequency Map |
| Visualization | Time Surface, XYT 3D Point Cloud, Orientation Cluster |
| Calibration | Intrinsic Calibration (blinking chessboard) |
Algorithms are mutually exclusive — enabling one disables the previous. Compute-heavy algorithms auto-enable a centered 256×144 unified ROI (saved and restored on disable), and all algorithms share a "ROI → noise filter → 1/4 downsample" preprocessing stage to bound computational cost. All algorithm parameters are adjusted exclusively in the sidebar (AlgorithmsPanel); algorithm display windows show only the title and output, preventing parameter drift between two independent control panels.
8 modes exposed in the sidebar based on the selected filter: BAF, STCF, Refractory, DWF, AgePolarity, Harmonic, Repetitious, SpatialBP.
The Event-to-Video algorithm defaults to E2VID and offers 4 DL modes (selected in the GUI; each mode has its own model file, so several weight sets can be installed side by side), plus the non-DL BardowVariational / InteractingMaps modes. A separate Dense Optical Flow (DL) algorithm renders EVFlowNet's per-pixel flow as a direction-coded HSV frame.
| Mode | Model | Reference (paper / repo) | Pretrained weights |
|---|---|---|---|
| 2 = E2VID (default) | UNetRecurrent | rpg_e2vid — Gallego et al., 2019 | E2VID_lightweight.pth.tar |
| 3 = E2VID+ | FlowNet (joint head) | event_cnn_minimal — Stoffregen et al., ECCV 2020 | model pack → reconstruction_model.pth |
| 4 = FireNet+ | FireNet (~40K params) | ibid. | ibid. → firenet_all_cts.pth |
| 5 = HyperE2VID | Hypernetwork UNet | HyperE2VID — Ercan et al., IEEE TIP 2024 | model.pth |
| DL flow | EVFlowNet | event_cnn_minimal (arch.: Zhu et al., 2018) | ibid. → flow_model.pth |
Setup (one-time, ~10 minutes):
cd /path/to/EBplus
# 1. ONNX Runtime 1.19.2 (CPU) into third_party/
mkdir -p third_party/onnxruntime && cd third_party/onnxruntime
wget https://github.com/microsoft/onnxruntime/releases/download/v1.19.2/onnxruntime-linux-x64-1.19.2.tgz
tar xzf onnxruntime-linux-x64-1.19.2.tgz --strip-components=1
cd ../..
# 2. (optional, iGPU acceleration) OpenVINO + Intel compute driver — see wiki/compile.md G4b
# 3. Python venv for model conversion
python3 -m venv .venv && . .venv/bin/activate
pip install torch --index-url https://download.pytorch.org/whl/cpu onnx onnxscript onnxruntime numpy scipy
deactivate
# 4. Reference repositories (conversion imports these; NOT redistributed)
git clone --depth 1 https://github.com/uzh-rpg/rpg_e2vid ref/rpg_e2vid
git clone --depth 1 https://github.com/TimoStoff/event_cnn_minimal ref/event_cnn_minimal
git clone --depth 1 https://github.com/ercanburak/HyperE2VID ref/HyperE2VID
# 5. Download the weights (links in the table above) into models/
# 6. Convert to ONNX
. .venv/bin/activate
python models/convert_to_onnx.py --input models/E2VID_lightweight.pth.tar --output models/e2vid_lightweight.onnx
python models/convert_event_cnn_minimal_to_onnx.py --model e2vid_plus --input reconstruction_model.pth --output models/e2vid_plus.onnx
python models/convert_event_cnn_minimal_to_onnx.py --model firenet_plus --input firenet_all_cts.pth --output models/firenet_plus.onnx
python models/convert_event_cnn_minimal_to_onnx.py --model evflownet --input flow_model.pth --output models/evflownet.onnx
python models/convert_hypere2vid_to_onnx.py --input model.pth --output models/hypere2vid.onnx
deactivate
# 7. Rebuild (CMake auto-detects ONNX Runtime / OpenVINO)
cmake --build build -- -j$(nproc)In the GUI: Algorithm → Event → Video (defaults to E2VID mode: 128×128 ROI, 30 fps, 1/4 downsample) — pick the mode in the sidebar; each DL mode exposes its own model path. Dense Optical Flow (DL) runs at the unified ROI with internal 1/4 downsampling. All DL inference uses the iGPU via OpenVINO when available (Inference device = Auto), falling back to ONNX Runtime CPU.
Without ONNX Runtime: E2VID falls back to a heuristic mode (voxel-grid sum + sigmoid). BardowVariational and InteractingMaps work without any setup.
Third-party models notice: EB plus does NOT redistribute any pretrained weights or reference source code — the conversion scripts run against YOUR clones under
ref/and the weights are downloaded from the official links above. Licenses of the referenced code: rpg_e2vid = GPL-3.0 (imported only at conversion time, on your machine, by your clone); event_cnn_minimal = no license file (weights shared by the authors for research use); HyperE2VID = MIT. The pretrained weights are academic releases; verify the applicable licenses (and patent landscape, where relevant) before commercial deployment.
- 5 background colors: Gray, Green, Yellow, Pink, Blue (default)
- 3 modes: Follow System (default), Always Light, Always Dark
- Dark mode uses a dark variant of the chosen color — not just black
- Text color auto-adjusts (black on light, white on dark)
- Settings persist across restarts; the title bar follows the theme
- XYT 3D event point cloud (GPU-accelerated)
- Additional algorithm display windows (dockable)
- Save/restore dock layout to JSON
EBplus/
├── gui/ # Qt 6 application
│ ├── main_window.* # Main window: title-bar menus, docks, signal wiring
│ ├── display/ # OpenGL viewport, overlays, 3D cloud
│ ├── panels/ # VSCode-style sidebar panels (5 groups, 11 panels)
│ ├── app/ # Controllers (camera, pipeline, theme, …)
│ ├── algo_bridge/ # Algorithm registry + filter chain
│ ├── recorder/ # RAW recording & playback
│ ├── exporter/ # HDF5/CSV/AVI export
│ ├── calibration/ # Intrinsic wizard
│ └── widgets/ # Title bar, ActivityBar, AlgoWindow, pixel probe
├── algo/ # Self-developed algorithm library (29 modules)
├── openeb/ # OpenEB SDK (Apache 2.0, v5.2.0)
├── models/ # E2VID PyTorch → ONNX conversion
├── run.sh # Launcher (sets env vars)
├── wiki/ # Docs: compile guide, algorithms, architecture
└── pic/ # Screenshots
Black screen on startup — Use the launcher script. If launching manually, set QT_QPA_PLATFORM=xcb and QSG_RHI_BACKEND=opengl.
Camera not detected — Verify MV_HAL_PLUGIN_PATH matches your vendor. Run metavision_hal_ls to check.
"NonMonotonicTimeHigh" error — This is a transient Evt3 protocol warning that occurs ~50% of the time on some Gen3.x cameras at startup. EB plus treats it as non-fatal and keeps the stream running. No action needed.
Dark mode not following system — Requires Qt 6.5+. On older Qt, use Theme → Mode → Dark.
| Shortcut | Action |
|---|---|
Ctrl+O |
Open file |
Ctrl+Shift+P |
Toggle playback panel |
F11 |
Fullscreen |
Ctrl+Q |
Quit |
EB plus is under active development and may still contain bugs. If you encounter any issue — crashes, rendering glitches, broken controls, or unexpected behavior — please open an issue. Bug reports from real users are the most direct help.
- Original code: MIT
- OpenEB SDK: Apache 2.0 — copyright Prophesee
- Inivation live-camera support (
gui/davis/): protocol, register tables and defaults ported from dv-processing (Apache 2.0, © iniVation AG) — attribution headers in each file - jAER-aligned algorithms: reference behavior from jAER (LGPL-2.1) — re-implementations, no code vendored
- DV GUI: not used. iniVation's dv-gui ships a custom (non-standard) license; the IMU visualization is a fresh implementation sharing only the generic rolling-curve concept
Built with Qt 6 · OpenCV · the OpenEB SDK
