【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:人脸检测
本文介绍了昉·星光 VisionFive2 Lite 单板计算机结合 OpenCV 实现人脸检测的项目设计。
项目介绍
VisionFive 2 Lite 结合 OpenCV 与 Haar 级联分类、DNN 模型实现人脸检测。

- 准备工作:硬件连接、系统安装、OpenCV 的板端部署、相关补充等;
- Haar 级联分类:使用 OpenCV 自带的 Haar 级联分类器实现人脸检测;
- DNN 模型:使用 OpenCV 自带的 DNN 算法工具实现模型调用和人脸检测,给出高精度人脸检测解决方案。
准备工作
包括硬件连接、OpenCV 部署及测试等。
硬件连接
包括供电、联网、显示、鼠标键盘输入等。

系统安装
安装和烧录 VisionFive2 Lite 官方 Ubuntu 操作系统。
详见:VF2 Lite 系统安装 .
软件更新
更新软件包
bash
wget https://github.com/starfive-tech/Debian/releases/download/v0.15.0-engineering-release-wayland/install_full.sh
sudo chmod +x install_full.sh
sudo ./install_full.sh
详见: StarFive-Tech | Debian .
OpenCV
更新操作系统后,检查 OpenCV 是否已正确安装
bash
sudo apt install python3-opencv
python3 -c "import cv2,sys;print(cv2.__version__,sys.version)"
若未输出版本号,如 4.6.0,则需根据报错信息添加缺失的库或更改为匹配的版本。
版本匹配
这里给出一种绕过软件源冲突实现 OpenCV 正确部署的方案。
缺失或版本对应错误,可从其他源获取目标版本,待安装完成再恢复软件源。
- 临时禁用 StarFive 源
bash
sudo mv /etc/apt/sources.list.d/starfive-main.list /etc/apt/sources.list.d/starfive-main.list.bak
- 更新索引并安装缺失的 OpenCV 包
bash
sudo apt update
sudo apt install -y libopencv-dev python3-opencv
- 恢复 StarFive 源
bash
sudo mv /etc/apt/sources.list.d/starfive-main.list.bak /etc/apt/sources.list.d/starfive-main.list
sudo apt update
- 验证安装结果
bash
pkg-config --modversion opencv4
python3 -c "import cv2,sys;print(cv2.__version__,sys.version)"
- 输出 OpenCV 版本号

至此,完成 OpenCV 的板端本地部署。
Haar CasCade
使用 Haar 级联分类器快速实现人脸检测。
-
使用已安装的
haarcascade_frontalface_default.xml模型文件检测人脸; -
加载模型
./model/*.xml和目标图片./img/test.jpg; -
检测结果弹窗显示。
代码
终端执行指令 touch fd_xml.py 新建文件,并添加如下代码
python
import numpy as np
import cv2
# 加载分类器
face_cascade = cv2.CascadeClassifier('/usr/share/opencv4/haarcascades/haarcascade_frontalface_default.xml')
# 读取图片
img = cv2.imread('./img/westfour.jpg',cv2.IMREAD_COLOR)
# 转换灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测人脸,输出外框
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=1)
# 遍历人脸检测结果
for (x,y,w,h) in faces:
# 画框
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
# 显示结果
cv2.namedWindow('faces', cv2.WINDOW_AUTOSIZE)
cv2.imshow('faces',img)
# 退出
cv2.waitKey(0)
# 关闭窗口
cv2.destroyAllWindows()
保存代码。
效果
- 终端执行
python3 fd_xml.py弹窗显示识别结果,按任意键关闭窗口。 - 识别效果如下

使用 Haar 级联分类的方案可以获得较为可信的人脸检测结果,准确度有进一步提升的空间。
DNN
下载预训练模型
使用 OpenCV 自带的 DNN 工具读取模型文件,加载本地模型 ./model/*.* 和目标图片 ./img/test.jpg,将检测结果弹窗显示。
代码
终端执行 touch fd_dnn.py 新建程序文件,添加如下代码
python
#!/usr/bin/env python3
import cv2
import numpy as np
# 1. 加载模型
prototxt = "./model/deploy.prototxt"
caffemodel = "./model/res10_300x300_ssd_iter_140000.caffemodel"
net = cv2.dnn.readNetFromCaffe(prototxt, caffemodel)
# 2. 读取本地图片
img = cv2.imread("./img/bean.jpg")
if img is None:
raise FileNotFoundError("请确认 ./img/*.jpg 存在")
h, w = img.shape[:2]
# 3. 构造 blob 并推理
blob = cv2.dnn.blobFromImage(cv2.resize(img, (300, 300)), 1.0,
(300, 300), (104.0, 177.0, 123.0))
net.setInput(blob)
detections = net.forward()
# 4. 画框 + 置信度
for i in range(detections.shape[2]):
confidence = detections[0, 0, i, 2]
if confidence < 0.5:
continue
# 映射回原图坐标
box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
(x1, y1, x2, y2) = box.astype("int")
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv2.putText(img, f"{confidence * 100:.1f}%", (x1, y1 - 5),
cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)
# 5. 弹窗显示
cv2.imshow("Face Detection", img)
cv2.waitKey(0) # 按任意键关闭
cv2.destroyAllWindows()
保存代码。
效果
- 终端运行指令
python3 fd_dnn.py弹窗显示识别结果,按任意键关闭窗口。 - 识别效果如下




总结
本文介绍了昉·星光 VisionFive2 Lite 单板计算机结合 OpenCV 与 Haar 级联分类、DNN 模型实现人脸检测,包括OpenCV 部署、Haar 级联分类方案、DNN 算法等方案实现模型调用,给出高精度人脸检测解决方案,为相关产品在边缘 AI 视觉应用的快速开发设计提供了参考。