04开发板上运行人脸识别模型
前言
书接上文,成功将电脑摄像头视频流传输到开发板并本地存储后,要做的就是使用PYNQ的pyhotn代码逐帧读取视频流,进行人脸识别啦。因为当初做这个项目的主要目的是锻炼嵌入式开发的能力,所以人脸识别模型是直接使用的opencv自带的分类器。(其实是懒得自己再捣鼓个模型了)
我使用的分类器是haarcascade_frontalface_alt2.xml,下载opencv后,在文件夹内搜索 haarcascade_frontalface_alt2.xml
即可找到该分类器。
懒得下载的话我也免费上传到我的资源上了,小黄能吃辣的资源下载主页,人脸识别代码也放一起了,点击进去下载即可。
一、人脸识别代码详解
import cv2
import os
def FaceDet():
# 创建级联分类器(有时候只写 haarcascade_frontalface_alt2.xml 会报错,建议写出完整的分类器存放路径)
face_casecade = cv2.CascadeClassifier('/home/xilinx/jupyter_notebooks/haarcascade_frontalface_alt2.xml')
# 视频流存储路径(不一定要跟我的相同,可以自己设置存放路径)
video_path = "/home/xilinx/jupyter_notebooks/VideoFlows"
files = os.listdir(video_path)
while (True):
# 循环读取视频流每帧图像,并对该帧使用分类器进行人脸识别,然后显示
for file in files:
img = cv2.imread(video_path+"/"+file)
# 将img转为灰度图
if img.ndim == 3:
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
else:
gray = img
# 人脸识别 输入:灰度图 输出:人脸区域的外接矩形框
faces = face_casecade.detectMultiScale(gray,1.3,5)
# 框出人脸
for (x,y,w,h) in faces:
img = cv2.rectangle(img, (x,y), (x+w,y+h), (255,0,0), 2)
# 显示图像
cv2.imshow('faceDetect',img)
cv2.waitKey(100)
if __name__ == '__main__':
FaceDet()
总结
本部分要注意的地方就是代码写的分类器 haarcascade_frontalface_alt2.xml 的路径要跟实际存放的位置一致,而且代码里最好把完整的路径写出来。其它地方应该问题不大。
有不清楚的地方,欢迎大家在评论区交流~
您的关注、点赞与收藏,是我持续创作优质博客的最大动力!
本项目系列文章:
【基于Xilinx ZYNQ7000的PYNQ框架项目】01人脸识别项目介绍与展示
【基于Xilinx Zynq7000的PYNQ框架项目】02 PYNQ镜像制作
【基于xilinx Zynq7000的PYNQ框架项目】03 Socket实现开发板和电脑的实时视频传输并存储图片
【基于Xilinx ZYNQ7000的PYNQ框架项目】05使用Overlay库和python父子进程实现开发板按键控制LED灯流水或熄灭
更多优质博客:小黄能吃辣的CSDN主页