OpenEB是与Metavision SDK相关的开源项目
它使任何人都可以更好地了解基于事件的视觉,直接与事件交互并构建自己的应用程序或相机插件。作为相机制造商,通过构建您自己的插件,确保您的客户受益于最先进的基于事件的软件套件。作为创造者、科学家、学者,加入快速发展的基于事件的视觉社区并为其做出贡献。
OpenEB由Metavision SDK的开放模块组成:
HAL:硬件抽象层,用于操作任何基于事件的视觉设备。
基础:基于事件的应用程序的基础和通用定义。
核心:可视化、事件流操作的通用算法。
Core ML:机器学习、event_to_video 和 video_to_event 管道的通用函数。
Stream:建立在 HAL 之上的高级抽象,可轻松与基于事件的相机交互。
UI:基于事件的数据的查看器和显示控制器。
OpenEB 还包含 Prophesee 相机插件的源代码,能够从我们基于事件的相机流式传输数据并读取基于事件的数据记录。支持的相机有:
EVK2-高清
EVK3 - VGA/320/高清
EVK4-高清
本文档介绍了如何编译和安装 OpenEB 代码库。有关更多信息,请参阅我们的在线文档,其中您可以找到一些帮助您开始使用 C++ 或 Python 的教程、一些了解如何使用我们的 API 的示例以及我们的模块和打包的更详细说明。
编译和执行在满足以下要求的平台上进行了测试:
Linux:Ubuntu 22.04 或 24.04 64 位
架构:amd64(又名 x64)
至少支持 OpenGL 3.0 的显卡
支持AVX2的CPU
未测试其他平台(替代 Linux 发行版、不同版本的 Ubuntu、ARM 处理器架构等)上的编译。对于这些平台,可能需要对本指南或代码本身进行一些调整。
如果您要从以前的版本升级 OpenEB,您应该首先仔细阅读发行说明,因为某些更改可能会影响您对我们的 SDK(例如 API 更新)和相机(例如可能需要固件更新)的使用。
然后,您需要清理系统中以前安装的 Prophesee 软件。如果在之前的编译之后,您选择在系统路径中部署 Metavision 文件,则转到源代码目录中的build
文件夹并启动以下命令来删除这些文件:
须藤使卸载
此外,在系统路径( /usr/lib
、 /usr/local/lib
、 /usr/include
、 /usr/local/include
)和环境变量( PATH
、 PYTHONPATH
和LD_LIBRARY_PATH
)中进行全局检查以删除Prophesee 或 Metavision 文件的出现次数。
要检索 OpenEB 源代码,您只需克隆 GitHub 存储库即可:
git 克隆 https://github.com/prophesee-ai/openeb.git --branch 5.0.0
在以下部分中,该目录的绝对路径称为OPENEB_SRC_DIR
如果您选择从 GitHub 下载 OpenEB 存档而不是克隆存储库,则需要确保选择Full.Source.Code.*
存档,而不是使用自动生成的Source.Code.*
存档。这是因为后者不包含必要的子模块。
安装以下依赖项:
须藤apt更新 sudo apt -y install apt-utils build-essential software-properties-common wget unzip curl git cmake sudo apt -y 安装 libopencv-dev libboost-all-dev libusb-1.0-0-dev libprotobuf-dev protobuf-编译器 sudo apt -y 安装 libhdf5-dev hdf5-tools libglew-dev libglfw3-dev libcanberra-gtk-module ffmpeg
或者,如果您想运行测试,则需要安装 Google Gtest 和 Gmock 软件包。有关更多详细信息,请参阅 Google 测试用户指南:
sudo apt -y 安装 libgtest-dev libgmock-dev
对于 Python API,您将需要 Python 和一些附加库。我们在 Ubuntu 22.04 上支持 Python 3.9 和 3.10,在 Ubuntu 24.04 上支持 Python 3.11 和 3.12。
我们建议将 Python 与 virtualenv 结合使用,以避免与其他已安装的 Python 包发生冲突。因此,首先将它与一些 Python 开发工具一起安装:
sudo apt -y install python3.x-venv python3.x-dev# 其中“x”是 9、10、11 或 12,具体取决于您的 Python 版本
接下来,创建虚拟环境并安装必要的依赖项:
python3 -m venv /tmp/prophesee/py3venv --系统站点包 /tmp/prophesee/py3venv/bin/python -m pip install pip --upgrade /tmp/prophesee/py3venv/bin/python -m pip install -r OPENEB_SRC_DIR/utils/python/python_requirements/requirements_openeb.txt
需要注意的是,创建虚拟环境时,需要使用--system-site-packages
选项来保证系统目录下安装的SDK包可以访问。但是,此选项默认情况下还会使本地用户站点包(通常位于~/.local/lib/pythonX.Y/site-packages
中)可见。为了防止这种情况并保持更干净的虚拟环境,您可以将环境变量PYTHONNOUSERSITE
设置为 true。
或者,您可以运行activate
命令 ( source /tmp/prophesee/py3venv/bin/activate
) 来修改 shell 的环境变量,将虚拟环境的 Python 解释器和脚本设置为当前会话的默认值。这允许您使用像python
这样的简单命令,而无需每次都指定完整路径。
C++ API 的 Python 绑定依赖于 pybind11 库,特别是版本 2.11.0。
请注意,仅当您想要使用 C++ API 的 Python 绑定时才需要 pybind11。您可以通过在编译期间的第 3 步传递参数-DCOMPILE_PYTHON3_BINDINGS=OFF
来选择不创建这些绑定(见下文)。在这种情况下,您不需要安装 pybind11,但您将无法使用我们的 C++ API 的 Python 接口。
不幸的是,没有预编译版本的 pybind11 可用,因此您需要手动安装:
wget https://github.com/pybind/pybind11/archive/v2.11.0.zip 解压 v2.11.0.zipcd pybind11-2.11.0/ mkdir 构建 && cd 构建 cmake ..-DPYBIND11_TEST=OFF cmake --build .sudo cmake --build 。 --目标安装
要使用机器学习功能,您需要安装一些额外的依赖项。
首先,如果您有一些带有 GPU 的 Nvidia 硬件,您可以选择安装 CUDA(11.6 或 11.7)和 cuDNN,以便将它们与 pytorch 和 libtorch 结合使用。
通过检查 Nvidia 兼容性页面,确保安装与您的 GPU 兼容的 CUDA 版本。
请注意,目前我们不支持 OpenCL 和 AMD GPU。
创建并打开构建目录OPENEB_SRC_DIR
: mkdir build && cd build
使用 CMake 生成 makefile: cmake .. -DBUILD_TESTING=OFF
。如果要指定 cmake 考虑哪个版本的 Python,则应使用选项-DPython3_EXECUTABLE=<path_to_python_to_use>
。例如,当您的系统上安装的 Python 版本比我们支持的版本更新时,这很有用。在这种情况下,cmake 将选择它并且编译可能会失败。
编译: cmake --build . --config Release -- -j 4
编译完成后,您有两个选择:您可以选择直接从build
文件夹工作,也可以将 OpenEB 文件部署在系统路径中( /usr/local/lib
、 /usr/local/include
...) 。
选项 1 - 从build
文件夹工作
要直接从build
文件夹使用 OpenEB,您需要使用此脚本更新一些环境变量(您可以将其添加到~/.bashrc
以使其永久):
源 utils/scripts/setup_env.sh
Prophesee 相机插件包含在 OpenEB 中,但您仍然需要复制系统路径中的 udev 规则文件并重新加载它们,以便使用以下命令检测到您的相机:
sudo cp <OPENEB_SRC_DIR>/hal_psee_plugins/resources/rules/*.rules /etc/udev/rules.d sudo udevadm 控制 --reload-rules sudo udevadm 触发器
选项 2 - 部署在系统路径中
要部署 OpenEB,请启动以下命令:
sudo cmake --build 。 --目标安装
请注意,您还可以在步骤 2 中生成 makefile 时使用CMAKE_INSTALL_PREFIX
变量 ( -DCMAKE_INSTALL_PREFIX=<OPENEB_INSTALL_DIR>
) 将 OpenEB 文件(应用程序、示例、库等)部署到您选择的目录中。同样,您可以配置将使用PYTHON3_SITE_PACKAGES
变量部署 Python 包的目录( -DPYTHON3_SITE_PACKAGES=<PYTHON3_PACKAGES_INSTALL_DIR>
)。
您还需要更新LD_LIBRARY_PATH
和HDF5_PLUGIN_PATH
(您可以将其添加到~/.bashrc
以使其永久):
导出 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/libexport HDF5_PLUGIN_PATH=$HDF5_PLUGIN_PATH:/usr/local/hdf5/lib/plugin # 在 Ubuntu 22.04 上export HDF5_PLUGIN_PATH=$HDF5_PLUGIN_PATH:/usr/local/lib/hdf5/plugin # 在 Ubuntu 上24.04
请注意,如果您使用的是第三方相机,则需要安装相机供应商提供的插件,并使用MV_HAL_PLUGIN_PATH
环境变量指定插件的位置。
要开始使用 OpenEB,您可以下载一些示例录音并使用 metavision_viewer 对其进行可视化,或者您可以从与 Prophesee 兼容的基于事件的摄像机流式传输数据。
运行测试套件是确保编译和安装过程中一切顺利的可靠方法。
下载运行测试所需的文件。单击右上角文件夹中的Download
。请注意所获得的存档的大小,其重量约为 1.5 Gb。
提取此存档的内容并将其放入<OPENEB_SRC_DIR>/datasets
。例如,序列gen31_timer.raw
的正确路径应该是<OPENEB_SRC_DIR>/datasets/openeb/gen31_timer.raw
。
重新生成 makefile 并启用测试选项:
cd <OPENEB_SRC_DIR>/build cmake ..-DBUILD_TESTING=ON
再次编译。 cmake --build . --config Release -- -j 4
最后,运行测试套件: ctest --verbose
目前,我们仅支持Windows 10。未测试在其他版本Windows上的编译。对于这些平台,可能需要对本指南或代码本身进行一些调整。
如果您要从以前的版本升级 OpenEB,您应该首先仔细阅读发行说明,因为某些更改可能会影响您对我们的 SDK(例如 API 更新)和相机(例如可能需要固件更新)的使用。
然后,如果您之前安装过 Prophesee 的任何软件,则需要先将其卸载。删除安装 Metavision 工件的文件夹(检查源代码的build
文件夹和C:Program FilesProphesee
这是部署步骤的默认安装路径)。
要检索 OpenEB 源代码,您只需克隆 GitHub 存储库即可:
git 克隆 https://github.com/prophesee-ai/openeb.git --branch 5.0.0
在以下部分中,该目录的绝对路径称为OPENEB_SRC_DIR
如果您选择从 GitHub 下载 OpenEB 存档而不是克隆存储库,则需要确保选择Full.Source.Code.*
存档,而不是使用自动生成的Source.Code.*
存档。这是因为后者不包含必要的子模块。
此过程的某些步骤不适用于 FAT32 和 exFAT 文件系统。因此,在继续之前请确保您使用的是 NTFS 文件系统。
您必须启用对长路径的支持:
按 Windows 键,输入 gpedit.msc 并按 Enter
导航到本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 文件系统
双击“启用Win32长路径”选项,选择“已启用”选项,然后单击“确定”
要编译 OpenEB,您需要安装一些额外的工具:
安装git
安装CMake 3.26
安装 Microsoft C++ 编译器(64 位)。您可以选择以下解决方案之一:
下载并运行“Visual Studio 2022 构建工具”安装程序
选择“C++构建工具”,确保选中Windows 10 SDK,并添加英语语言包
仅用于构建,您可以安装 MS Build Tools(免费,Windows 10 SDK 包的一部分)
对于开发,您还可以下载并运行 Visual Studio Installer
安装将用于安装依赖项的 vcpkg:
下载 vcpkg 版本 2024.04.26 并将其解压到一个文件夹中,我们将其称为VCPKG_SRC_DIR
cd <VCPKG_SRC_DIR>
bootstrap-vcpkg.bat
vcpkg update
将位于utils/windows
的 OpenEB 源代码中的vcpkg-openeb.json
文件复制到VCPKG_SRC_DIR
并将其重命名为vcpkg.json
通过运行以下命令安装库:
vcpkg install --triplet x64-windows --x-install-root installed
最后,下载并安装 ffmpeg 并将bin
目录添加到您的 PATH 中。
请注意,如果您在多个项目或 OpenEB 版本中使用 vcpkg,则简化您管理的 vcpkg 安装数量是有益的。为此,您需要所需库的特定版本。您可以通过交叉引用我们的vcpkg.json
文件与官方 vcpkg 存储库来找到这些版本,但为了您的方便,我们在下面列出了它们:
libusb:1.0.27
提升:1.78.0
opencv:4.8.0
直接:1.24.0
测试:1.14.0
pybind11:2.12.0
格鲁:2.2.0
GLFW3:3.4.0
HDF5:1.14.2
协议缓冲区:3.21.12
下载以下 Python 版本之一的“Windows x86-64 可执行安装程序”:
Python 3.9
Python 3.10
Python 3.11
Python 3.12
在PATH
中添加 Python 安装和脚本目录,并确保它们列在WindowsApps
文件夹之前,该文件夹包含启动 Microsoft Store 的 Python 别名。因此,如果您在默认路径中安装了 Python 3.9,则您的用户PATH
应按顺序包含这三行:
%USERPROFILE%AppDataLocalProgramsPythonPython39 %USERPROFILE%AppDataLocalProgramsPythonPython39Scripts %USERPROFILE%AppDataLocalMicrosoftWindowsApps
我们建议将 Python 与 virtualenv 结合使用,以避免与其他已安装的 Python 包发生冲突。
创建虚拟环境并安装必要的依赖项:
python -m venv C:tmppropheseepy3venv --system-site-packages C:tmppropheseepy3venvScriptspython -m pip install pip --upgrade C:tmppropheseepy3venvScriptspython -m pip install -r OPENEB_SRC_DIRutilspythonpython_requirementsrequirements_openeb.txt
创建虚拟环境时,需要使用--system-site-packages
选项来确保系统目录下安装的SDK包可以访问。但是,此选项默认情况下也会使您的本地用户站点包可见。为了防止这种情况并保持更干净的虚拟环境,您可以将环境变量PYTHONNOUSERSITE
设置为 true。
或者,您可以运行activate
命令 ( C:tmppropheseepy3venvScriptsactivate
) 来修改 shell 的环境变量,将虚拟环境的 Python 解释器和脚本设置为当前会话的默认值。这允许您使用像python
这样的简单命令,而无需每次都指定完整路径。
要使用机器学习功能,您需要安装一些额外的依赖项。
首先,如果您有一些带有 GPU 的 Nvidia 硬件,您可以选择安装 CUDA(11.6 或 11.7)和 cuDNN,以便将它们与 pytorch 和 libtorch 结合使用。
在OPENEB_SRC_DIR
文件夹中打开命令提示符:
创建并打开构建目录,将在其中创建临时文件: mkdir build && cd build
使用 CMake 生成 makefile: cmake .. -A x64 -DCMAKE_TOOLCHAIN_FILE=<OPENEB_SRC_DIR>cmaketoolchainsvcpkg.cmake -DVCPKG_DIRECTORY=<VCPKG_SRC_DIR>
。请注意,传递给参数-DCMAKE_TOOLCHAIN_FILE
值必须是绝对路径,而不是相对路径。
编译: cmake --build . --config Release --parallel 4
编译完成后,您有两个选择:您可以选择直接从build
文件夹工作,也可以将 OpenEB 文件(应用程序、示例、库等)部署到您选择的目录中。
选项 1 - 从build
文件夹工作
要直接从build
文件夹使用 OpenEB,您需要使用以下脚本更新一些环境变量:
utilsscriptssetup_env.bat
选项 2 - 部署在您选择的目录中
将<OPENEB_INSTALL_DIR>bin
附加到PATH
(如果使用默认配置,则为C:Program FilesPropheseebin
)
将<OPENEB_INSTALL_DIR>libmetavisionhalplugins
附加到MV_HAL_PLUGIN_PATH
(如果使用默认配置,则为C:Program FilesPropheseelibmetavisionhalplugins
)
将<OPENEB_INSTALL_DIR>libhdf5plugin
附加到HDF5_PLUGIN_PATH
(如果使用默认配置, C:Program FilesPropheseelibhdf5plugin
)
将<PYTHON3_PACKAGES_INSTALL_DIR>
附加到PYTHONPATH
(如果使用默认配置则不需要)
要在默认文件夹 ( C:Program FilesProphesee
) 中部署 OpenEB,请执行以下命令(您的控制台应以管理员身份启动):
cmake --build 。 --config 发布 --目标安装
要在另一个文件夹中部署 OpenEB,您应该使用具有目标文件夹值 ( OPENEB_INSTALL_DIR
) 的附加变量CMAKE_INSTALL_PREFIX
再次生成解决方案(上面的步骤 2)。
同样,要指定 Python 包的部署位置 ( PYTHON3_PACKAGES_INSTALL_DIR
),您应该使用PYTHON3_SITE_PACKAGES
变量。
以下是自定义这两个文件夹的命令示例:
cmake .. -A x64 -DCMAKE_TOOLCHAIN_FILE=<OPENEB_SRC_DIR>cmaketoolchainsvcpkg.cmake -DVCPKG_DIRECTORY=<VCPKG_SRC_DIR> -DCMAKE_INSTALL_PREFIX=<OPENEB_INSTALL_DIR> -DPYTHON3_SITE_PACKAGES=<PYTHON3_PACKAGES_INSTALL_DIR> -DBUILD_TESTING=OFF
执行此命令后,您应该启动 OpenEB 的实际编译和安装(您的控制台应该以管理员身份启动):
cmake --build 。 --config 发布 --并行 4 cmake --build 。 --config 发布 --目标安装
您还需要手动编辑一些环境变量:
在OPENEB_SRC_DIR
文件夹中打开命令提示符:
创建并打开构建目录,将在其中创建临时文件: mkdir build && cd build
使用 CMake 生成 Visual Studio 文件: cmake .. -G "Visual Studio 17 2022" -A x64 -DCMAKE_TOOLCHAIN_FILE=<OPENEB_SRC_DIR>cmaketoolchainsvcpkg.cmake -DVCPKG_DIRECTORY=<VCPKG_SRC_DIR>
(适应您的 Visual Studio 版本) 。请注意,传递给参数-DCMAKE_TOOLCHAIN_FILE
值必须是绝对路径,而不是相对路径。
打开解决方案文件metavision.sln
,选择Release
配置并构建ALL_BUILD
项目。
编译完成后,您可以选择直接从build
文件夹工作,也可以将 OpenEB 文件(应用程序、示例、库等)部署到您选择的目录中。
选项 1 - 从build
文件夹中工作
要直接从build
文件夹使用 OpenEB,您需要按照脚本utilsscriptssetup_env.bat
中的操作更新环境变量
选项 2 - 部署 OpenEB
要部署 OpenEB,您需要构建INSTALL
项目。默认情况下,文件将部署在C:Program FilesProphesee
Prophesee 相机插件包含在 OpenEB 中,但您需要安装相机驱动程序才能在 Windows 上使用。为此,请按照以下步骤操作:
从我们的文件服务器下载 wdi-simple.exe
在以管理员身份启动的命令提示符中执行以下命令:
wdi-simple.exe -n“EVK”-m“先知”-v 0x04b4 -p 0x00f4 wdi-simple.exe -n“EVK”-m“先知”-v 0x04b4 -p 0x00f5 wdi-simple.exe -n“EVK”-m“先知”-v 0x04b4 -p 0x00f3
如果您拥有 EVK2 或 RDK2,则需要完成一些额外步骤,OpenEB 安装指南的相机插件部分的在线文档对此进行了详细介绍。
如果您使用的是第三方相机,则需要按照相机供应商提供的说明安装驱动程序和相机插件。确保在MV_HAL_PLUGIN_PATH
环境变量中引用插件的位置。
要开始使用 OpenEB,您可以下载一些示例录音并使用 metavision_viewer 对其进行可视化,或者您可以从与 Prophesee 兼容的基于事件的摄像机流式传输数据。
运行测试套件是确保编译和安装过程中一切顺利的可靠方法。
下载运行测试所需的文件。单击右上角文件夹中的Download
。请注意所获得的存档的大小,其重量约为 1.5 Gb。
提取此存档的内容并将其放入<OPENEB_SRC_DIR>/datasets
。例如,序列gen31_timer.raw
的正确路径应该是<OPENEB_SRC_DIR>/datasets/openeb/gen31_timer.raw
。
要运行测试套件,您需要使用 CMake 重新配置构建环境并重新编译
使用 MS Visual Studio 进行编译
使用CMake编译
使用 CMake 生成 Visual Studio 文件(使命令适应您的 Visual Studio 版本,并注意-DCMAKE_TOOLCHAIN_FILE
必须是绝对路径,而不是相对路径):
cmake .. -G "Visual Studio 17 2022" -A x64 -DCMAKE_TOOLCHAIN_FILE=<OPENEB_SRC_DIR>cmaketoolchainsvcpkg.cmake -DVCPKG_DIRECTORY=<VCPKG_SRC_DIR> -DBUILD_TESTING=ON
打开解决方案文件metavision.sln
,选择Release
配置并构建ALL_BUILD
项目。
使用 CMake 重新生成构建(请注意-DCMAKE_TOOLCHAIN_FILE
必须是绝对路径,而不是相对路径):
cd <OPENEB_SRC_DIR>/build cmake .. -A x64 -DCMAKE_TOOLCHAIN_FILE=<OPENEB_SRC_DIR>cmaketoolchainsvcpkg.cmake -DVCPKG_DIRECTORY=<VCPKG_SRC_DIR> -DBUILD_TESTING=ON
编译: cmake --build . --config Release --parallel 4
运行测试套件只需ctest -C Release