2024-11-15 17:45
41 次阅读|
0 个评论
本篇测评由优秀测评者“eefocus_3914144”提供。 本文将介绍基于米尔电子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 经测试,只能支持640*480 为此建立opencv_test.py import cv2 video = 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中主要使用了两种特征(即两种方法)进行人脸检测,Haar特征和LBP特征。用得最多的是Haar特征人脸检测,此外OpenCV中还集成了深度学习方法来实现人脸检测。 【参考资料】 使用OpenCV工具包成功实现人脸检测与人脸识别,包括传统视觉和深度学习方法(附完整代码,模型下载......)_opencv人脸识别-CSDN博客 【Haar级联检测器预训练模型下载】 opencv/opencv: Open Source Computer Vision Library (github.com) 下载好的,在 opencv-4.xdatahaarcascades 文件夹下有模型,把他上传到开发板。 【获取检测人脸的图片】 我在百度上找到了**的图片,并把它也上传到开发板。 【编写检测代码】 import numpy as np import cv2 as cv if __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 ) # (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() 【实验效果】 运行程序后,可以正确地识别,效果如下: