trainbot 项目介绍
运行与应用
trainbot 项目旨在监视一段铁轨,检测通过的火车,并拼接其图像。这个系统可以使用任何video4linux的USB摄像头或Raspberry Pi摄像头模块v3。通过简洁的设计,用户可以在火车经过时捕捉并保存图像。
前端展示
trainbot 的前端展示为一个基于VueJS SPA应用,使用Typescript编写,并可通过常见的浏览器访问。这个前端不需要服务器支持,只需从后端加载整个SQLite数据库后在本地浏览器中进行数据查询和显示。
运行环境与安装
trainbot可以安装在Raspberry Pi 4 B等平台上并进行测试。项目不依赖于复杂的计算机视觉库,例如OpenCV,这样大大降低了计算需求,所有图像处理均在CPU上进行。项目进行了简单的假设,例如:
- 火车仅出现在预先裁剪的图像区域。
- 摄像头稳定,图像不会大幅移动。
- 火车以设定的最小和最大速度行驶。
开发与部署
项目部署分为两个部分:用Go编程的火车检测二进制文件和网站前端。用户可以选择多种方式获取二进制文件,如使用Go构建,或从GitHub的CI运行结果中下载。对于前端,进行完构建后将其部署到合适的网络服务器上。
Raspberry Pi上的运行步骤包括配置摄像头、选取裁剪区域等,并且可以配置为通过FTP将图像和数据库文件上传至网络。
硬件与工具
本项目使用Raspberry Pi 4 Mod B及Raspberry Pi Camera v3进行硬件支持。有一些3D打印配件用于安装摄像头和Raspberry Pi本身。这些硬件均安装在阳台的防水壳内。
代码开发与测试
trainbot项目可在x86_64和aarch64架构上编译。项目提供了用于Docker容器构建和本地测试的Makefile,涵盖从代码编译到测试的一系列步骤。
摄像头与视频设置
使用ffmpeg和v4l2工具,我们可以查看当前摄像头的设置并调整曝光和焦距,并使用特定命令记录视频。对于Raspberry Pi 摄像头,还提供了一系列命令用于获取图像或视频流。
后续开发计划
项目未来计划实现以下功能:
- 修复在黑暗中出现的误报。
- 引入机器学习以对火车进行分类。
- 改进上传策略(如切换到sftp)。
- 根据构建标签选择图像处理方法。
trainbot项目体现了现代计算技术和硬件的灵活结合,支持个人业余爱好者对火车进行长期观测和记录。用户可以根据文本说明自主搭建和调整整个系统,从而实现对火车的实时检测和影像记录。