4 个版本 (2 个破坏性更新)
0.3.0 | 2022 年 6 月 27 日 |
---|---|
0.2.0 | 2022 年 6 月 14 日 |
0.1.1 | 2022 年 6 月 11 日 |
0.1.0 | 2022 年 6 月 7 日 |
#338 在 科学
60KB
965 行
BombusCV
基于 OpenCV 的运动检测 & 视频录制软件,专为研究 蜜蜂 构建(因此得名)。
索引
用例
本软件是为了满足在科学研究中跟踪和/或录制标记蜜蜂个体的片段的需求而构建的。它已与 Raspberry Pi 4[^1] 和 Raspberry Pi HQ Camera[^2] 一起使用,指向 Bombus terrestris 的巢穴入口,以根据运动录制片段。这大大减少了录制所需的存储空间,并完全消除了后期处理工作的需求,因为它只录制视频帧中出现的个体的片段。
bombuscv-rs
使用相机输入提供实时运动检测 & 视频录制[^3],可直接用于现场工作。然而,使用 video
选项,可以替换实时相机输入为预录制的视频文件:这对于 删除视频中的静止时刻 和减少/消除手动视频剪辑的需要非常有用。
[^1]: 4GB 的 RAM 内存,由 30000mAh 的电池供电,这意味着这种设置也可以在没有交流电的地方复制[^2]: 1230 万像素的 Sony IMX477 传感器[^3]: 基于硬件(截至写作时,RaspberryPi 4 可以以 60fps 的帧率处理 640x480 分辨率)
示例
以下是产生的视频输出的简要示例
更多示例可以在 YouTube 上找到。
安装
在 RaspberryPi 上安装,请查看 RaspberryPi 4 安装。
要求
此程序需要一个可工作的 OpenCV (版本 >=4.5.5
)安装。建议从源代码构建 OpenCV(如果您打算从源代码构建 OpenCV,请确保也安装 OpenCV 依赖项),尽管它应该与您发行版存储库中的预编译包一起工作(已在带有 extra/opencv
包的 ArchLinux 上成功测试)。
使用 Cargo
在 crates.io 上有可用的包。为了安装它,请在您的 shell 中运行 cargo install bombuscv-rs
[^4]。
[^4]: 假设已安装 Rust
RaspberryPi 4 安装
强烈建议使用至少有 4GB RAM 的 RaspberryPi 4。此外,在尝试安装之前,请通过运行 raspi-config
并重新启动来在 接口选项 中启用 Legacy Camera 支持。由于在 RaspberryPi 上安装可能有点 棘手,因此提供了一个安装脚本[^5]。它负责更新和准备系统、编译 OpenCV 并安装 Rustup,最后是 BombusCV。您可以使用 curl
运行 安装脚本。
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/marcoradocchia/bombuscv-rs/master/bombuscv-raspi.sh | sh
[^5]: 使用脚本安装需要 RaspberryPi OS 64 位
使用方法
bombuscv-rs 0.3.0
Marco Radocchia <marco.radocchia@outlook.com>
OpenCV based motion detection/recording software built for research on bumblebees.
USAGE:
bombuscv [OPTIONS]
OPTIONS:
-d, --directory <DIRECTORY> Output video directory
-f, --framerate <FRAMERATE> Video capture framerate
--format <FORMAT> Output video filename format (see
<https://docs.rs/chrono/latest/chrono/format/strftime/index.html>
for valid specifiers)
-h, --help Print help information
-H, --height <HEIGHT> Video capture frame height
-i, --index <INDEX> /dev/video<INDEX> capture camera index
--no-color Disable colored output
-o, --overlay Date&Time video overlay
-q, --quiet Mute standard output
-v, --video <VIDEO> Video file as input
-V, --version Print version information
-W, --width <WIDTH> Video capture frame width
指定 width
、height
和 framerate
将使 bombuscv
检测捕获设备提供的最接近的值组合,并选择它们。换句话说:如果需要有效的选项,则将使用它们;否则,bombuscv
将将这些值调整为最接近的可用的组合[^6]。
请注意,video
选项,它使用预录制的视频输入运行 bombuscv
,与 framerate
、width
、height
和 overlay
不兼容。此外,如果这些选项在配置文件中指定,它们将被忽略。这是因为前两个选项是从输入文件自动检测的,而最后一个选项在用于非实时视频流时没有意义;相同的规则适用于 CLI 参数。
[^6]: 适用于配置文件的相同规则
配置
除了 video
和 no-color
之外的所有 CLI 选项都可以设置在默认情况下存储在 $XDG_CONFIG_HOME/bombuscv/config.toml
或通过设置 BOMBUSCV_CONFIG
环境变量指定的文件系统中的任何位置的 可选 配置文件中。CLI 选项/参数/标志覆盖配置文件中定义的选项。以下是一个示例配置文件
# be quiet (mute stdout)
quiet = false
# output video directory
directory = "~/output_directory/"
# output video filename format (see
# https://docs.rs/chrono/latest/chrono/format/strftime/index.html for valid specifiers)
format = "%Y-%m-%dT%H:%M:%S"
# The following options are ignored if bombuscv is run with `--video` option
# /dev/video<index> camera input
index = 0
# video capture frame width
width = 640
# video capture frame height
height = 480
# video capture framerate
framerate = 30
# date&time video overlay
overlay = true
变更日志
完整的 变更日志。
待办事项
- 在 README 中提供构建和安装说明,以及安装 OpenCV 的说明。
- 为 RaspberryPi 创建自动化安装脚本。
- 使用
~/<path>
在配置文件中使用video
或directory
选项会导致错误:在 Deserializer 扩展~
到绝对路径时需要。 - 使用
video
时,在抓取的帧上生成的 日期和时间 悬浮窗口没有意义:在启用video
选项时禁用视频悬浮窗口。 - 增加选项,使用环境变量指定自定义配置路径。
- 增加选项,指定(在配置文件或通过CLI参数)自定义输出视频文件名格式器(必须是chrono DateTime语法)。
- 增加线程信号,用于中断捕获线程并优雅地终止执行。
- 将逻辑从
main
移动到新定义的run
。
聊天支持
加入BombusCV的Discord服务器以获取安装或使用聊天支持。
许可协议
依赖关系
~5–13MB
~126K SLoC