在开发环境中引入VisionFlow#
C++#
对于C++开发人员来说,VisionFlow只是一个预编译的二进制库,需要作为项目的依赖添加。 不同的C++开发人员可能使用不同的项目构建工具,因此以下是使用几种常用构建工具将VisionFlow 集成到项目中的说明:
请将以下代码复制到你项目的 WORKSPACE 文件中,并将URL和SHA256替换为你想要使用的 VisionFlow版本的链接和SHA256哈希值:
http_archive(
name = "visionflow_windows",
url = "<VisionFlow_URL>",
sha256 = "<VisionFlow_SHA256>",
)
http_archive(
name = "visionflow_linux",
url = "<VisionFlow_Linux_URL>",
sha256 = "<VisionFlow_Linux_SHA256>",
)
在上面的代码中,将 <VisionFlow_URL> 替换为所需版本的 VisionFlow 下载链接,将 <VisionFlow_SHA256> 替换为相应版本的 SHA256 摘要。这将指示构建系统从指定的 URL 下载 VisionFlow,并使用提供的 SHA256 摘要进行验证。发布包的链接和 SHA256 都可以在 VisionFlow的发布邮件信息中找到。
然后你可以将 VisionFlow 作为依赖库在你的项目的 Bazel 目标中使用,如下所示:
cc_binary(
name = "main",
srcs = ["main.cpp"],
deps = select({
"@platforms//os:windows": ["@visionflow_windows//:visionflow"],
"@platforms//os:linux": ["@visionflow_linux//:visionflow"],
}),
)
在上述示例中,我们假设你的项目有一个名为 main 的 C++ 二进制目标,其中的 main.cpp 是你的源代码文件。通过添加 deps 部分,我们将 VisionFlow 添加为项目的依赖,使得你的 main 可以使用 VisionFlow 提供的功能。
确保根据你的项目目录结构和构建需求进行相应的调整。这个示例只是为了说明如何将 VisionFlow 添加到 Bazel 构建的项目中。
我们推荐使用 CMake 的 FetchContent 来导入 VisionFlow。在你的项目中创建一个名为 find_visionflow.cmake 的文件,并在其中写入以下内容:
include(FetchContent)
FetchContent_Declare(
visionflow
URL <VisionFlow_URL>
UPDATE_DISCONNECTED
)
FetchContent_GetProperties(visionflow)
if(NOT visionflow_POPULATED)
FetchContent_Populate(visionflow)
add_library(VisionFlow SHARED IMPORTED)
set_target_properties(
VisionFlow
PROPERTIES
IMPORTED_IMPLIB
${visionflow_SOURCE_DIR}/lib/visionflow.if.lib
IMPORTED_IMPLIB_DEBUG
${visionflow_SOURCE_DIR}/lib/visionflow.if.lib
IMPORTED_IMPLIB_RELEASE
${visionflow_SOURCE_DIR}/lib/visionflow.if.lib
IMPORTED_LOCATION
${visionflow_SOURCE_DIR}/bin/visionflow.dll
IMPORTED_LOCATION_DEBUG
${visionflow_SOURCE_DIR}/bin/visionflow.dll
IMPORTED_LOCATION_RELEASE
${visionflow_SOURCE_DIR}/bin/visionflow.dll
INTERFACE_INCLUDE_DIRECTORIES
${visionflow_SOURCE_DIR}/include
)
install(
DIRECTORY
${visionflow_SOURCE_DIR}/bin/
DESTINATION release
)
endif()
接下来,你可以在你的 CMakeLists.txt 文件中包含 find_visionflow.cmake .
要将 VisionFlow 库添加到 Visual Studio 的 C++ 项目中,按照以下步骤进行操作:
从发布电子邮件中的链接下载预编译的 VisionFlow zip 包。
将 VisionFlow zip 包的内容解压到计算机上的所需位置。
在 Visual Studio 中打开你的 C++ 项目。
在“解决方案资源管理器”中,右键点击项目,从上下文菜单中选择“属性”。
在“属性页”窗口中,导航到“配置属性” -> “VC++目录”。
6. 在“包含目录”字段中,添加解压后 VisionFlow 包内的“include”文件夹的路径。 这个文件夹包含必要的头文件。你可以手动输入路径,也可以使用“…”按钮浏览并选择文件夹。
7. 在“库目录”字段中,添加解压后 VisionFlow 包内的“lib”文件夹的路径。 这个文件夹包含必要的库文件。同样,你可以手动输入路径,也可以使用“…”按钮浏览并选择文件夹。
转到“配置属性” -> “链接器” -> “输入”。
在“附加依赖项”字段中,添加“visionflow.if.lib”。
点击“确定”以保存更改。
以上步骤说明了如何将 VisionFlow 库添加到 Visual Studio 中的 C++ 项目中。请注意根据你的 项目和文件路径,确保适当地调整路径。现在,你已经将预编译的 VisionFlow 包添加到了 Visual Studio 中的 C++ 项目中。然后注意确保在你的源文件中包含所需的 VisionFlow 头文件即可。
C##
对于C#开发人员来说,VisionFlow 只是一个预编译的二进制库,需要作为项目的依赖添加。 VisionFlow 不仅提供了“visionflow.cs”源代码文件,还提供了基于.NET 6.0的预编译二进制库“csharp_visionflow.dll”。 要在 Visual Studio 中将 VisionFlow 库添加到你的C#项目中,请按照以下步骤进行操作:
从发布电子邮件中的链接下载预编译的 VisionFlow 包。
将 VisionFlow 包的内容解压到计算机上的所需位置。
在 Visual Studio 中打开你的 C# 项目。
如果你想要自己编译源代码或者受限于C#版本,继续按照下步骤操作:
将 VisionFlow 发布包中的“csharp/visionflow.cs”文件复制到你的C#项目中的所需位置。
在“解决方案资源管理器”中点击“显示所有文件”,找到“visionflow.cs”并右键点击,选择“包括在项目中”。
将“bin”目录中的所有文件复制到生成“.exe”文件的文件夹中,或将“bin”添加到环境变量中。
对于目标框架为.NET Framework的C#项目,需要额外的配置。在“解决方案资源管理器”中,右键点击你的项目, 从上下文菜单中选择“属性”。选择“生成”,确保“首选32位”未选中 。
注意,C#版本必须大于等于.NET 6.0。
在“解决方案资源管理器”中右键单击您的项目,然后从上下文菜单中选择“添加” -> “项目引用”。
点击左侧列表的“浏览”,并选择下方“浏览”,添加“bin”目录中的“csharp_visionflow.dll”。
勾选“csharp_visionflow.dll”,然后点击下方的“确定”。
将“bin”目录中的所有文件复制到生成“.exe”的文件夹中,或将“bin”添加到环境变量中。
现在你已经将预构建的 VisionFlow 包添加到了 Visual Studio 中的C#项目中。
Java#
Python#
Linux#
对于Linux平台,我们提供了`Dockerfile`文件协助配置基础的运行环境。 请注意,在运行容器时需要添加GPU相关的参数`–gpus=all`使容器获得宿主机器的硬件资源:
docker run --gpus=all image_name
你也可以指定容器可访问的GPU资源,例如:
docker run -ti --gpus "device=0, 1"
进入容器后,如果你可以通过`nvidia-smi`命令获取到GPU信息,则证明容器能够访问GPU资源。
使用`Bazel`构建系统时,需要指定编译器使用C++17标准,添加参数`–cxxopt=-std=c++17`,否则可能因为C++标准不同导致编译失败。
如果遇到无法连接授权码的问题,通过以下命令检查授权库服务是否处于运行中:
service senseshieldd status
如果出现 senseshield stopped 则需要通过命令 service senseshieldd start 启动服务。
对于硬件狗授权,仅支持Linux宿主机启动docker容器。启动时添加命令: -v /scp/:/scp –privileged 将USB设备挂载到docker容器内。
docker run -it --gpus=all -v /scp/:/scp --privileged image_name
Windows宿主机的docker容器暂不支持硬件狗,仅支持网络狗。