【基于Xilinx ZYNQ7000的PYNQ框架项目】04开发板上运行人脸识别模型

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主页

你可能感兴趣的:(嵌入式硬件,opencv,计算机视觉,目标检测,目标跟踪,视觉检测,图像处理)