广告

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

2024-11-11 米尔电子 阅读:
OpenCV提供了一个非常简单的接口,用于相机捕捉一个视频(我用的电脑内置摄像头)

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

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

1、安装python3-opencvOp6ednc

apt install python3-opencvOp6ednc

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

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

Op6ednc

经测试,只能支持640*480Op6ednc

为此建立opencv_test.pyOp6ednc

import cv2Op6ednc

video = cv2.VideoCapture(0)Op6ednc

设置相机参数Op6ednc

video .set(cv2.CAP_PROP_FRAME_WIDTH, 1280)Op6ednc

video .set(cv2.CAP_PROP_FRAME_HEIGHT, 720)Op6ednc

while True:Op6ednc

ret, frame = video.read()Op6ednc

cv2.imshow("A video", frame)Op6ednc

c = cv2.waitKey(1)Op6ednc

if c == 27:Op6ednc

    breakvideo.release()cv2.destroyAllWindows()Op6ednc

保存后执行”python3 opencv_test.pyOp6ednc

Op6ednc

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

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

OpenCV人脸检测方法Op6ednc

在OpenCV中主要使用了两种特征(即两种方法)进行人脸检测,Haar特征和LBP特征。用得最多的是Haar特征人脸检测,此外OpenCV中还集成了深度学习方法来实现人脸检测。【参考资料】使用OpenCV工具包成功实现人脸检测与人脸识别,包括传统视觉和深度学习方法(附完整代码,模型下载......_opencv人脸识别-CSDN博客Op6ednc

【Haar级联检测器预训练模型下载】下载好的,在文件夹下有模型,把他上传到开发板。Op6ednc

【获取检测人脸的图片】我在百度上找到了**的图片,并把它也上传到开发板。Op6ednc

【编写检测代码】Op6ednc

import numpy as npOp6ednc

import cv2 as cvOp6ednc

if __name__ == '__main__':Op6ednc

# (6) 使用 Haar 级联分类器 预训练模型 检测人脸Op6ednc

# 读取待检测的图片Op6ednc

img = cv.imread("yanmi.jpg")Op6ednc

print(img.shape)Op6ednc

    # 加载 Haar 级联分类器 预训练模型Op6ednc

model_path = "haarcascade_frontalface_alt2.xml"Op6ednc

face_detector = cv.CascadeClassifier(model_path)  # <class 'cv2.CascadeClassifier'>Op6ednc

# 使用级联分类器检测人脸Op6ednc

faces = face_detector.detectMultiScale(img, scaleFactor=1.1, minNeighbors=1,Op6ednc

                minSize=(30, 30), maxSize=(300, 300))Op6ednc

print(faces.shape)  # (17, 4)Op6ednc

print(faces[0])  # (x, y, width, height)Op6ednc

# 绘制人脸检测框Op6ednc

for x, y, width, height in faces:Op6ednc

cv.rectangle(img, (x, y), (x + width, y + height), (0, 0, 255), 2, cv.LINE_8, 0)Op6ednc

# 显示图片Op6ednc

cv.imshow("faces", img)Op6ednc

cv.waitKey(0)Op6ednc

cv.destroyAllWindows()Op6ednc

【实验效果】运行程序后,可以正确地识别,效果如下:Op6ednc

Op6ednc

 Op6ednc

责编:Demi
文章来源及版权属于米尔电子,EDN电子技术设计仅作转载分享,对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。如有疑问,请联系Demi.xia@aspencore.com
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
广告
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了