视觉实验-260304
更新-260304 | 发布-260301
本次实验将使用视觉实验箱体验 3 个视觉功能:
- 76285 实验1-3:面部检测
- 76286 实验1-4:人脸检测
- 76287 实验1-5:手势识别
原理和代码解读,可参考 CG 平台相关说明。本文档主要描述操作相关。
目录
实验箱简介
和常见的台式机很相似。视觉实验箱的相关部件有:
- 主机。有个小小机箱,内部是英伟达开发板(Nvidia Jetson)。
- 屏幕。支持 HDMI 接口的屏幕,都可以通过 HDMI 线连接到 Jetson 开发板。
- 鼠标和键盘。常见的鼠标和键盘,通过 USB 连接 Jetson 开发板。
- 操作系统。Ubuntu,Linux 的发行版的一种。(常见操作系统有: Windows、MacOS、Linux,等)
- 机械臂。由 Jetson 开发板控制的一个外部设备。
提示:Jetson开发板安装 VSCode、中文输入法、截图等,可参考:教具相关软件安装使用↗。
上电开机
- 视觉实验箱配有 1 个电源,一端连实验箱,另一端插头插在桌子下面的插座上。
- 桌子下面有个带开关的的立方体插座。按下开关,电源指示灯亮,即表明接通电源。
- 稍等片刻可完成启动。视觉实验箱的机械臂站立起来,且屏幕显示 Ubuntu 的主界面,就启动完成。
熟悉 Linux 命令
- ❇️ 建议:如果还不大熟悉 Linux 命令和操作,尽量手敲以尽快熟悉。
- ℹ️ 信息:Jetson 开发板账号密码是 jetson / yahboom,如需要。比如在笔记本电脑上通过
ssh jetson@开发板IP地址登录开发板,。 - ✨ 提示:在 Ubuntu 主界面左侧导航栏找到对应的 App,或者点击左下角 九宫格 Show Applications 后出现顶部搜索栏输入 App 的名字查找。
- ✨ 提示:按
tab键可补齐文字,加快输入。假定当前目录下有 3 个子目录(face_mesh,gesture_recognizer,haar_detection),输入cd ges后按tab键,则补齐为cd gesture_recognizer/。 - ✨ 提示:按
esc键后,再按↑↓箭头键,可以找到输入过的命令。不必每次都重复敲命令。 - ✨ 提示:浏览器和其他图形界面中,复制/粘贴的快捷键是 ctrl + c 和 ctrl + v。
- ✨ 提示:在 终端 Terminal App 中,复制/粘贴的快捷键是 ctrl + shift + c 和 ctrl + shift + v。
- ✨ 提示:
win+←↑↓→箭头键,可排列屏幕。
开始 Linux 操作之旅……
-
启动浏览器访问网站
在 Jetson 开发板上启动 Firefox 浏览器 App,访问
https://tnt.gdvzz.com/,找到本次实验的文档:AI Lab → AI实验课 → 视觉实验-260304。如果习惯使用 Chrome 浏览器,可以在终端中执行
sudo apt install chromium-browser安装。 -
在 Jetson 开发板上启动 终端 Terminal App。
-
查看 IP 地址:
ifconfig | grep 172 -
创建/切换/显示当前目录:
# 在用户的 HOME 目录下创建子目录 tmp260304 mkdir ~/tmp260304 # 切换到 HOME 目录 cd pwd # 执行后屏幕应显示 /home/jetson # 切换到 tmp260304 子目录 cd ~/tmp260304 pwd # 执行后屏幕应显示 /home/jetson/tmp260304说明:pwd 是 Print Working Directory,显示当前所在的目录路径。
-
显示信息:
ls -l -
复制/改名
# 先切换到 /home/jetson/tmp260304 cd ~/tmp260304 # 在当前目录下生成文件 test.txt echo "Hello, World!" > test.txt # 复制文件 test.txt 到 hello.txt cp test.txt hello.txt # 修改文件 hello.txt 为 hiworld.txt mv hello.txt hiworld.txt # 列出当前目录下的文件 ls -l -
清除屏幕信息
clear
Python环境准备
为什么需要 Conda
以下信息摘自网络文章“Python中的Anaconda(Conda)是什么?为什么需要它?” 1,供了解 conda 大致是什么。感兴趣同学还可查看 B 站视频“15分钟彻底搞懂!Anaconda Miniconda conda-forge miniforge Mamba”2 获得更多信息。
Python是一种有特别多用处的计算机语言,可以用来做网页开发、数据分析以及AI等几乎大多数事情。每一个目的都需要特定的“包(packages)”。
与此同时,不仅会用到不同包的,甚至用到的Python版本都是不一样的。
问题是,你只有一台电脑,不可能为了新作一个项目就需要买一台新电脑……因此,我们通过“虚拟环境”来完成同一台电脑 开发管理多个项目的事情。我们可以针对具体的项目、逐一对应地开发虚拟环境。可以用多个虚拟环境来做多个数据开发、多个虚拟环境来做网页开发的事情ect.。
因此,在做不同的python项目,用到不同包、不同python版本时,虚拟环境的作用就出来了。
在python官网下载python,与此同时就会下载 pip(Python integrated package managemer)(所以顾名思义,pip的目的就是用来管理包);如果想要管理一台电脑上的多个环节,那就可以下载virtualenv,帮助我们管理虚拟环境(但也并不是说管理虚拟环境只有这一个工具)。
如果想用python,也不一定必须要在python官网下载,替代方案是:下载Ananconda(Anaconda 和 Python 是“包含关系”,Anaconda 包含了 Python)。在下载Anaconda(或者是miniconda)后,Conda就会装在我们的电脑系统上。 Conda既可以做包的管理,也可以管理虚拟环境。(PS:miniconda可以理解为轻量化的Anaconda;miniconda通常在终端操作,Anaconda通常是图形化页面)
那 pip 和 venv 还用不用?
- Pip 是 Python 官方的包管理工具,更“原生”,适合轻量项目
- Conda 更适合安装大型包和管理多个项目的环境
- 二者可以搭配使用:Conda 管环境,pip 装特定包
第1步:安装 conda
在 Jetson 开发板上启动 终端 Terminal App,然后输入 conda 并回车。执行后如果屏幕显示“命令没有找到”之类的信息,则表明尚未安装,请参考如下命令先安装 Conda。如果已经安装 Conda,请跳到第2步。
mkdir ~/tmp2603 # 创建临时目录(目录名随意取)
cd ~/tmp2603 # 切换到临时目录
# 从科大镜像下载安装包
wget https://mirrors.ustc.edu.cn/github-release/conda-forge/miniforge/LatestRelease/Miniforge3-Linux-aarch64.sh
# 安装过程中,请仔细阅读提示。并在询问“是否初始化Miniforge3”时输入 yes。
bash Miniforge3-Linux-aarch64.sh
# 安装完成后,关闭并重新打开终端,或者执行以下命令使配置生效:
source ~/.bashrc
# 之后,你的命令行前会出现 (base) 字样,表示基础环境已激活。
第2步:创建虚拟环境
在终端中执行以下 conda create 命令创建 Python3.9 虚拟环境。
conda create -n pye39 python=3.9
pye39 是虚拟环境的名字。可以是其他名字。
第3步:激活虚拟环境
在终端中执行以下 conda activate 命令激活刚创建的虚拟环境。
(base) jetson@jetson-Yahboom:~$ conda activate pye39
(pye39) jetson@jetson-Yahboom:~$ python3 --version
Python 3.9.23 # 屏幕显示的确是 Python3.9
- pye39 是要激活的虚拟环境的名字。激活后可以看到命令行提示符头部已改为
(pye39),表示已激活该虚拟环境。 - 可以在该虚拟环境中执行
python3 --version,可以看到屏幕显示的确是 Python3.9。 - $ 之前的是命令行提示符,仅为说明激活前后的变化。$ 之后的才是要执行的命令。
第4步:在虚拟环境中安装Python包
在终端中依次执行以下 pip3 install 命令,安装本次实验所需的 Python 包到创建的虚拟环境中。
pip3 install mediapipe==0.10.9
pip3 install opencv-python==4.12.0.88
pip3 install numpy==2.0.2
相关 Python包安装完成后,可以依次执行以下 pip3 list | grep 命令检查的确安装完成。
pip3 list | grep mediapipe
mediapipe 0.10.9 # 屏幕显示
pip3 list | grep opencv-python
opencv-python 4.12.0.88 # 屏幕显示
pip3 list | grep numpy
numpy 2.0.2 # 屏幕显示
- 一定要把相关的 Python 包安装到对应的虚拟环境中。不能安装到其他虚拟环境(比如 base)或非虚拟环境。否则后续执行实验样例代码时,会报错“xx 找不到”。
- 和 CG 平台上要求的 Python 版本不一致(本文-3.9,CG-3.8),相关包的版本也不完全一样。可尝试参考本文的版本。
✅ 至此 Python 环境准备已完成。如何查看虚拟环境列表、激活/去激活、删除虚拟环境,请参考 conda常用命令。
conda常用命令
-
显示虚拟环境列表
conda env list -
激活/去激活某个虚拟环境
执行如下命令可激活某个虚拟环境:
conda activate 虚拟环境名比如要激活虚拟环境名称叫 abc,则执行
conda activate abc。执行成功后,命令行提示符头部会显示(abc)。在某个虚拟环境中,执行如下命令可去激活该虚拟环境:
conda deactivate假定当前在虚拟环境 abc 中。执行上述去激活命令后,命令行提示符头部的
(abc)会变化:消失(回到非虚拟环境);或者显示(base)(假定是从(base)虚拟环境执行conda activate abc激活 abc 虚拟环境的) -
删除虚拟环境
执行
conda remove命令可删除虚拟环境:conda remove -n 虚拟环境名 --all比如执行
conda remove -n myenv --all,可以 remove all packages from environmentmyenvand the environment itself。
下载解压样例代码
将本次实验使用的样例代码,下载解压到 Jetson 开发板上。
-
下载 zip 压缩包
样例代码下载链接如下:
- 76285. 实验1-3:面部检测 - face_mesh.zip
- 76286. 实验1-4:人脸检测 - haar_detection.zip
- 76287. 实验1-5:手势识别 - gesture_recognizer.zip
样例代码也可从 CG 平台相关链接下载。CG 平台下载的 zip 包的名字是一长串数据字符,可从文件的时间确认哪个是哪个。
-
解压
在 Jetson 开发板上通过 Firefox 浏览器下载,默认存放在用户家目录(HOME目录)的 Downloads 子目录下。按 CG 平台手册建议,先新建 exp 子目录,再将样例代码从 Downloads 子目录移动到 exp 子目录。
mkdir ~/exp # 家目录下新建 exp 子目录 mv ~/Downloads/face_mesh.zip ~/exp # zip 包移动到 exp 子目录 mv ~/Downloads/haar_detection.zip ~/exp mv ~/Downloads/gesture_recognizer.zip ~/exp解压 3 个 zip 包
cd ~/exp # 先切换到 exp 目录 unzip -oq face_mesh.zip -d ./ # 再执行 unzip解压 unzip -oq haar_detection.zip -d ./ unzip -oq gesture_recognizer.zip -d ./执行
ls -l查看解压结果。应该有 3 个目录和 3 个 zip 文件。(pye39) jetson@jetson-Yahboom:~/exp$ ls -l face_mesh gesture_recognizer haar_detection face_mesh.zip gesture_recognizer.zip haar_detection.zip # 屏幕显示应该有 3 个目录和 3 个 zip 文件
连接USB摄像头
- 先将机械臂的摄像头的 USB 连接线,从 Jetson 开发板上拔下来。
- 再把桌子上的单目摄像头(海康 hikvision)的 USB 连接线,插入实验箱的 USB 扩展坞中。
- 在 Jetson 开发板启动 终端 Terminal App,在终端中执行
cheese命令,可在弹出的窗口中看到图像,即表明摄像头能正常工作。
说明:也可以用机械臂的摄像头做本次几个实验。但该摄像头固定在机械臂的顶部,不大方便移动而已。
体验视觉功能
在 Jetson 开发板上启动 终端 Terminal App,并激活本实验所需的 Python 虚拟环境(请参考 conda常用命令)。然后可体验以下视觉功能:面部检测,人脸检测,手势识别。
面部检测
-
确保已激活本次实验所需 Python 虚拟环境
如未激活或不确定,请参考 conda常用命令。
-
执行
python3 main.py启动程序cd ~/exp cd face_mesh python3 main.py程序启动后会自动打开摄像头,实时检测画面中的人脸,并在窗口中显示检测结果。窗口被分为左右两部分:
- 左侧窗口: 原始的摄像头画面(已做镜像翻转),并叠加了检测到的人脸轮廓线(绿色线条)和所有468个关键点(红色微小圆点)。左上角实时显示帧率(FPS)。
- 右侧窗口: 在纯黑背景上只显示人脸网格和关键点,可以更清晰地观察细节。
- 按 q 键(或 ctrl + c)退出程序。
更多信息请参考 CG 平台之“76285 实验1-3:面部检测”。
人脸检测
-
确保已激活本次实验所需 Python 虚拟环境
如未激活或不确定,请参考 conda常用命令。
-
执行
python3 main.py启动程序cd ~/exp cd haar_detection python3 main.py程序启动后会自动打开摄像头,并进入默认的“人脸检测”模式。你可以通过键盘进行交互:
- 按 f 键: 在三种模式间循环切换:face (仅人脸检测), eye (仅眼睛检测), face_eye (同时检测人脸和眼睛)。
- 按 q 键(或 ctrl + c)退出程序。
窗口中会实时显示检测结果:
- 人脸: 会被一个带有装饰性边角的紫色矩形框標出。
- 眼睛: 会被一个红色的圆形框標出。
- 左上角: 实时显示当前的FPS(帧率)和检测模式(Mode)。
更多信息请参考 CG 平台之“76286 实验1-4:人脸检测”。
手势识别
-
确保已激活本次实验所需 Python 虚拟环境
如未激活或不确定,请参考 conda常用命令。
-
执行
python3 main.py启动程序cd ~/exp cd gesture_recognizer python3 main.py程序启动后会自动打开摄像头,实时检测画面中的单只手并识别其手势。窗口被分为左右两部分:
- 左侧窗口: 原始的摄像头画面(已做镜像翻转),并叠加了检测到的手部骨架(绿色线条)和关键点(红色圆点)。左上角会实时显示识别出的手势名称(如 “Five”, “OK”, “Thumb_up”),右上角显示FPS(帧率)。
- 右侧窗口: 在纯黑背景上只显示手部骨架,方便观察。
- 按 q 键(或 ctrl + c)退出程序。
更多信息请参考 CG 平台之“76287 实验1-5:手势识别”。
关机&复原&离开
实验结束离开前,请各位同学完成以下事项:
关机
- 在终端中执行关机命令
shutdown -h now。或者屏幕右上角:电源标志 → power off。 - 观察开发板小机箱的散热风扇。风扇停止后,按桌子下面的立方体插座上的开关,电源指示灯熄灭。
- 起身正对机械臂,将竖立的机械臂向前轻轻推倒,水平卧在 Jetson 开发板小机箱上即可。
- 机械臂的摄像头,插回到 Jetson 开发板上。
- 单目摄像头,拔下后还回实验室后方柜子里。
🚫 电源线:不必从视觉实验箱拔下来;也不必从桌子下面的插座上拔下来。
🚫 机械臂:水平自然卧倒在小机箱上即可。不必整理、扭成很好看的造型(可能导致下次启动时无法站立)。
椅子复原
椅子推到桌子下面。1 个桌子配备 6 个椅子。多余的椅子放到实验室的左右两侧。
带走物品
请带走个人物品。
THE END
-
Python中的Anaconda(Conda)是什么?为什么需要它?↗;知乎;2025-06-19 ↩
-
15分钟彻底搞懂!Anaconda Miniconda conda-forge miniforge Mamba ↗;B站;2025-08-07 ↩