如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板

描述

本文将介绍基于米尔电子MYD-LMX93开发板(米尔基于NXP i.MX93开发板)的基于OpenCV的人脸检测方案测试。

 

OpenCV提供了一个非常简单的接口,用于相机捕捉一个视频(我用的电脑内置摄像头)

 

1、安装python3-opencv

  •  

apt install python3-opencv

(左右移动查看全部内容)

 

2、查看摄像头支持的格式与分辨率

  •  

root@debian:~# v4l2-ctl --device=/dev/video0 --list-formats-ext

(左右移动查看全部内容)

 

OpenCV

 

经测试,只能支持640*480,为此建立opencv_test.py

  •  
  •  

import cv2video = cv2.VideoCapture(0)

(左右移动查看全部内容)

 

设置相机参数

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

video .set(cv2.CAP_PROP_FRAME_WIDTH, 1280)video .set(cv2.CAP_PROP_FRAME_HEIGHT, 720)while True:    ret, frame = video.read()    cv2.imshow("A video", frame)c = cv2.waitKey(1)if c == 27:    breakvideo.release()cv2.destroyAllWindows()

(左右移动查看全部内容)

 

保存后执行”python3 opencv_test.py

 

OpenCV

 

OpenCV装好后,可以为后面的人脸检测提供可行性。

 

要实现人脸识别功能,首先要进行人脸检测,判断出图片中人脸的位置,才能进行下一步的操作。

 

OpenCV人脸检测方法

在OpenCV中主要使用了两种特征(即两种方法)进行人脸检测,Haar特征和LBP特征。用得最多的是Haar特征人脸检测,此外OpenCV中还集成了深度学习方法来实现人脸检测。

 

参考资料

使用OpenCV工具包成功实现人脸检测与人脸识别,包括传统视觉和深度学习方法(附完整代码,模型下载......)

 

Haar级联检测器预训练模型下载

opencv/opencv: Open Source Computer Vision Library (github.com)

 

下载好的,在opencv-4.xdatahaarcascades文件夹下有模型,把他上传到开发板。

 

OpenCV

 

获取检测人脸的图片

我在百度上找到了**的图片,并把它也上传到开发板。

 

编写检测代码

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

import numpy as npimport cv2 as cvif __name__ == '__main__':    # (6) 使用 Haar 级联分类器 预训练模型 检测人脸    # 读取待检测的图片    img = cv.imread("yanmi.jpg")    print(img.shape)      # 加载 Haar 级联分类器 预训练模型    model_path = "haarcascade_frontalface_alt2.xml"    face_detector = cv.CascadeClassifier(model_path)  #    # 使用级联分类器检测人脸    faces = face_detector.detectMultiScale(img, scaleFactor=1.1, minNeighbors=1,                                             minSize=(30, 30), maxSize=(300, 300))    print(faces.shape)  # (17, 4)    print(faces[0])  # (x, y, width, height)      # 绘制人脸检测框    for x, y, width, height in faces:        cv.rectangle(img, (x, y), (x + width, y + height), (0, 0, 255), 2, cv.LINE_8, 0)     # 显示图片     cv.imshow("faces", img)     cv.waitKey(0)     cv.destroyAllWindows()

(左右移动查看全部内容)

 

实验效果

运行程序后,可以正确地识别,效果如下:

 

OpenCVOpenCV

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分