Desktop Vision 是一个面向 Raspberry Pi 5 的桌面式检测演示项目,结合 2D 图像、深度数据与桌面端交互流程,用于快速验证一键检测设备的基础能力。
项目当前集成了以下核心组件:
IMX477:负责 2D 尺寸测量与外观检测Arducam B0410C:负责基于深度信息的 3D 分析PyQt5:负责桌面端可视化界面OpenCV:负责传统视觉算法与图像处理流程
本版本聚焦于可运行的硬件原型,主要包含:
- 2D 实时预览
- 深度实时预览
- 界面手动触发采集
- 单次同步采集 RGB 与深度数据
- 基础 2D 测量
- 基础 2D 缺陷检测
- 基础 3D 堆叠 / 翘曲分析
- 将检测结果持久化保存到
output/
.
config/
output/
src/
core/
devices/
pipeline/
storage/
ui/
vision_2d/
vision_3d/
main.py
requirements.txt
先安装 Python 依赖:
pip install -r requirements.txt本项目默认配合树莓派 5 上已经准备好的 tofenv 虚拟环境使用。
- 当前设备用户名:
violet - 家目录:
/home/violet tofenv路径:/home/violet/tofenvArducam_tof_camera目录位于家目录下
如果组员是在这台已经配置好的树莓派上运行本项目,建议直接复用这个环境,不要重复新建虚拟环境。每次开始前先执行:
source /home/violet/tofenv/bin/activate激活后建议顺手确认一下当前解释器是否正确:
echo $VIRTUAL_ENV
which python
python -c "import sys; print(sys.executable)"理想情况下,输出应指向:
/home/violet/tofenv/home/violet/tofenv/bin/python
如果不是在这台树莓派上运行,而是换了一台新设备或更换了用户名,那么就需要按实际环境重新创建或调整虚拟环境路径。
在 Raspberry Pi OS 上,还需要额外安装与相机相关的系统依赖:
python3-picamera2- 来自 Arducam_tof_camera 的 Arducam ToF SDK
本项目中的深度相机适配层默认依赖 Arducam 示例中使用的 Python 模块:
import ArducamDepthCamera as acpython main.py推荐使用下面这组最直接的流程:
cd ~/你的仓库名
source /home/violet/tofenv/bin/activate
python scripts/check_runtime.py
python scripts/check_2d.py
python scripts/check_depth.py
python scripts/smoke_test.py
python main.py如果你已经把仓库克隆到树莓派上,最常见的启动顺序就是:先进入项目目录,再激活 tofenv,然后依次做运行环境检查、2D 相机检查、深度相机检查、联合冒烟测试,最后再启动主界面。
第一次使用时,先在树莓派家目录下拉取仓库:
cd ~
git clone https://github.com/你的用户名/你的仓库名.git
cd 你的仓库名如果仓库已经拉取过,就直接进入项目目录即可:
cd ~/你的仓库名进入项目目录并激活环境后,先运行:
cd ~/你的仓库名
source /home/violet/tofenv/bin/activate
python scripts/check_runtime.py期望看到类似下面的检查结果:
[OK] import cv2[OK] import yaml[OK] import PyQt5[OK] import picamera2[OK] import ArducamDepthCamera
如果这里有模块导入失败,先不要直接运行主程序,而是优先补齐环境。
这一阶段建议先只连接 IMX477 到 CAM1,不要同时连接 Arducam。
系统层可先测试:
rpicam-hello --list-cameras
rpicam-hello -t 5000
rpicam-still -o imx477_test.jpg项目层测试:
cd ~/你的仓库名
source /home/violet/tofenv/bin/activate
python scripts/check_2d.py这一阶段只连接 Arducam B0410C 到 CAM2。
官方示例测试:
cd ~/Arducam_tof_camera/example/python
python3 preview_depth.py
python3 capture_raw.py项目层测试:
cd ~/你的仓库名
source /home/violet/tofenv/bin/activate
python scripts/check_depth.py当两个相机都单独验证通过后,再按下面方式同时接入:
IMX477 -> CAM1Arducam B0410C -> CAM2
然后先测 IMX477:
rpicam-hello --list-cameras
rpicam-still -o dual_imx477_test.jpg如果默认相机编号不对,再试:
rpicam-still --camera 0 -o dual_imx477_test.jpg
rpicam-still --camera 1 -o dual_imx477_test.jpg再测试 Arducam:
cd ~/Arducam_tof_camera/example/python
python3 preview_depth.py完成双相机接入后,再回到项目目录运行:
cd ~/你的仓库名
source /home/violet/tofenv/bin/activate
python scripts/check_2d.py
python scripts/check_depth.py
python scripts/smoke_test.py如果 smoke_test.py 执行成功,检测结果会输出到 output/。
所有检查都通过后,再启动主程序:
cd ~/你的仓库名
source /home/violet/tofenv/bin/activate
python main.py进入界面后的推荐操作顺序:
- 点击连接设备
- 观察状态栏是否正常
- 点击刷新预览
- 点击手动采集并检测
- 如果环境中缺少
Picamera2或ArducamDepthCamera,程序会自动回退到合成演示帧,确保界面仍可正常启动。 - 这样设计是为了方便桌面端开发、算法联调以及分阶段硬件接入。
- 在组内这台树莓派上,默认优先复用
/home/violet/tofenv,这样最省事,也最接近当前已经验证通过的运行环境。 - 如果你想确认 Raspberry Pi 当前实际使用的虚拟环境,可执行:
echo $VIRTUAL_ENV
which python
python -c "import sys; print(sys.executable)"