1 个不稳定版本

0.1.0 2022年8月9日

#353科学

Download history • Rust 包仓库 20/week @ 2024-03-11 • Rust 包仓库 22/week @ 2024-03-18 • Rust 包仓库 29/week @ 2024-03-25 • Rust 包仓库 55/week @ 2024-04-01 • Rust 包仓库 6/week @ 2024-04-08 • Rust 包仓库 13/week @ 2024-04-15 • Rust 包仓库 14/week @ 2024-04-22 • Rust 包仓库 19/week @ 2024-04-29 • Rust 包仓库 17/week @ 2024-05-06 • Rust 包仓库 16/week @ 2024-05-13 • Rust 包仓库 23/week @ 2024-05-20 • Rust 包仓库 15/week @ 2024-05-27 • Rust 包仓库 19/week @ 2024-06-03 • Rust 包仓库 13/week @ 2024-06-10 • Rust 包仓库 15/week @ 2024-06-17 • Rust 包仓库 15/week @ 2024-06-24 • Rust 包仓库

63 每月下载量
7 crates 中使用

MIT 许可证

52KB
981

光流处理堆栈

OFPS 是一个通用的光流处理库,OFPS 套件是一个展示其功能的配套应用程序。

运行 OFPS 套件

  1. 通过 https://rustup.rs/ 安装最新稳定版本的 Rust 工具链(版本 1.60.0)。

  2. 安装依赖项(见专用子节)。

  3. 使用 cargo build --release 构建默认插件

  4. 可选地,构建 libmv 估计器(更复杂,请参阅其子节)。

  5. 使用 cargo run --release --bin ofps-suite 运行 OFPS 套件

安装依赖项

Ubuntu/Debian

sudo apt-get install atk1.0 libgtk-3-dev ffmpeg libavutil-dev libavcodec-dev libavformat-dev libavfilter-dev libavdevice-dev libopencv-dev libclang-dev clang libxcb-shape0-dev libxcb-xfixes0-dev

Fedora

sudo dnf -y install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install gtk3-devel clang clang-devel opencv-devel ffmpeg-devel

Windows/macOS

祝你好运 :)

构建 libmv 估计器

首先,确保 libmv 子模块已初始化

git submodule update --init

然后,在仓库根目录下源环境

source env

然后,安装额外依赖项

Ubuntu/Debian

sudo apt-get install cmake libceres-dev libjpeg-dev

Fedora

sudo dnf install cmake ceres-solver-devel libjpeg-turbo-devel

转到 libmv-rust/libmv 目录。运行 make。并非所有内容都会编译。这是正常的 - 我们只需要 libmultiview.so 及其依赖项。

回到仓库根目录,运行 cargo build --release --workspace

故障排除

设置日志级别以更好地查看错误

export RUST_LOG=<trace,debug,info,warn,error>

如果是图形问题,尝试强制 OpenGL 后端

export WGPU_BACKEND=gles

文档

假设工作空间已编译,按照 OFPS 套件部分中的步骤 1-3,运行 cargo doc --open

单元测试

假设工作空间已编译,运行 cargo test

示例配置

Google Drive下载核心样本,并在项目根目录下的samples目录中解压samples.zip(sha256 - c1a27a0716b5633792afca7c1a032dcc9c15c8f7153a03e8d5206e1d86379896)。原始检测样本较大,因此已将其分离为cctv.h264文件(sha256 - 9fd17d015924538c140f9ee478bdbfc5233f6c948ff134d2f31415e795da9b66)。将其放置在samples/detection目录中。位置很重要,因为预定义配置引用的是相对于当前工作目录的路径。

检测配置

从给定路径加载预定义配置文件(通过点击大型的检测标题按钮)。

  • 从结果中获取场景 - samples/scenario_detect.json(需要原始样本)。

  • 基本运动 - samples/basic_detect.json

  • 实时TCP流(网络摄像头) - samples/tcp_detect.json

对于通过TCP的V4L网络摄像头,首先在另一个终端中运行以下命令

ffmpeg -i /dev/video1 -c:v libx264 -r 30 -preset ultrafast -tune zerolatency -x264-params "" -f mpegts tcp://0.0.0.0:3333\?listen

调整/dev/video1以正确设置V4L设备。每次连接实例后都需要重新运行此命令。

跟踪配置

从给定路径加载预定义配置文件(通过点击大型的跟踪标题按钮)。

  • 合成视频,所有估计器,地面实况比较 - samples/synthetic_all_gt.json

  • 合成视频,单个估计器,地面实况 - samples/synthetic_almeida_gt.json

  • 真实世界视频 - samples/real_world.json

  • 真实世界视频(裁剪,慢动作) - samples/real_world_crop.json

  • 实时TCP流(网络摄像头) - samples/tcp_track.json

预加载的样本可以被替换为不同的样本。请参阅samples/syntheticsamples/real_world目录。需要裁剪配置以考虑到在慢动作视频中应用了1.2x传感器裁剪。

对于TCP配置,请参考前面的子节中的设置步骤。此外,为了使跟踪准确,必须正确设置摄像机的水平和垂直视野。

依赖关系

~3.5–5.5MB
~108K SLoC