Evision 开源项目安装与使用指南
evision Evision: An OpenCV-Erlang/Elixir binding 项目地址: https://gitcode.com/gh_mirrors/evis/evision
1. 项目目录结构及介绍
Evision 是一个基于 OpenCV 的 Erlang/Elixir 绑定项目,旨在让 Erlang 和 Elixir 社区能够利用强大的计算机视觉库 OpenCV。以下是其基本的目录结构及其简要说明:
- app: 包含了 Elixir 应用程序的核心代码。
- assets: 可能存放一些静态资源文件或配置用于前端展示(如果项目有此需求)。
- c_src: 存放 C 或 C++ 源码,这些源码可能用于与 OpenCV 进行底层交互。
- cc_toolchain: 编译工具链相关配置。
- config: 配置文件夹,但在这个上下文中没有具体提到某个特定的配置文件。
- examples: 提供了一系列示例,展示如何在实际中使用 Evision。
- gleam_src: 如果项目整合了 Gleam(一种 Erlang 家族中的函数式编程语言),则这里存放相关源码。
- lib: 第三方库或者项目编译后的库文件可能会存放于此。
- patches: 打补丁的文件,用于修改原始 OpenCV 源码以适应绑定。
- py_src: Python 相关的源码,可能是辅助脚本或是接口桥接代码。
- scripts: 脚本文件,可能包括构建、部署或测试相关的自动化脚本。
- src: 主要的源代码存放地,包含 Elixir 和可能的其他语言混合代码。
- test: 单元测试和集成测试的代码。
- formatter.exs: 格式化规则文件,用于代码风格统一。
- gitconfig, gitignore: 版本控制相关配置。
- gitlab-ci.yml: GitLab CI/CD 流程配置。
- CHANGELOG.md: 更新日志。
- CMakeLists.txt: CMake 构建系统配置文件。
- Cheatsheet.cheatmd: 快速参考或技巧汇总文档。
- LICENSE: 许可证文件,表明项目遵循 Apache-2.0 许可。
- LICENSE-OpenCV: OpenCV 自身的许可证信息。
- Makefile, Makefile.win: 不同平台下的构建脚本。
- README.md: 项目的简介和快速入门指南。
- do_release.sh: 发布或构建过程中的脚本。
2. 项目的启动文件介绍
Evision 作为一个库,并不直接提供一个启动文件来运行整个应用。然而,在你的 Elixir 项目中,一旦添加 Evision 作为依赖,你可以通过编写特定的 Elixir 脚本来启动你的应用并调用 Evision 的功能。通常,启动点会在 elixir
的 main
函数或者是应用程序的 start
函数中,这取决于你如何组织你的应用逻辑。例如,如果你在 lib/my_app.ex
中定义了一个应用程序模块,启动逻辑可能包含初始化 Evision 相关模块的调用。
3. 项目的配置文件介绍
Evision 的配置主要通过环境变量进行管理,而不是传统的配置文件。以下是一些关键的环境变量及其作用:
- TARGET_ABI: 仅当目标使用 musl libc 时需要设置,例如神经网络项目。默认值由系统的架构自动获取。
- EVISION_PREFER_PRECOMPILED: 控制是否优先使用预编译库,默认为
true
。设置为false
将强制从源代码编译。 - EVISION_ENABLE_CONTRIB: 启用或禁用来自 OpenCV contrib 的额外模块,默认启用。
- EVISION_ENABLE_CUDA: 启用 CUDA 支持,需要配合 EVISION_ENABLE_CONTRIB 一起使用,且需正确配置 CUDA 运行时路径。
- EVISION_CUDA_VERSION 和 EVISION_CUDNN_VERSION: 如果启用 CUDA,则指定版本号。
- EVISION_PRECOMPILED_CACHE_DIR: 可选,指定预编译档案文件的缓存目录。
虽然 Evision 本身没有特定的 .conf
文件,上述环境变量的配置可通过项目级的环境变量设置来间接实现,如在 config/config.exs
中为生产或开发环境设置,或者直接通过命令行指定这些变量。确保在运行应用前正确设置了这些变量,尤其是在需要特定编译选项或依赖于预编译库的情况下。
evision Evision: An OpenCV-Erlang/Elixir binding 项目地址: https://gitcode.com/gh_mirrors/evis/evision