1个不稳定版本

0.1.0 2022年8月9日

#445 in 可视化

MIT许可证

245KB
5.5K SLoC

光流处理堆栈

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

运行OFPS Suite

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

  2. 安装依赖项(请参阅专用子节)。

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

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

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

安装依赖项

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 Suite部分的步骤1-3,运行cargo doc --open

单元测试

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

示例配置

谷歌驱动下载核心样本,并在项目根目录下的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.2倍传感器裁剪。

对于TCP配置,请参阅前面的子节以获取设置步骤。此外,必须正确设置摄像头的水平和垂直视野,以确保跟踪的准确性。

依赖项

~32–67MB
~1M SLoC