OpenCV实现简单人脸检测

本文介绍如何使用OpenCV实现基于静态图像的人脸识别。通过加载人脸训练模型,对图像进行灰度转换,然后利用detectMultiScale函数进行人脸检测,并用绿色方框标记检测到的人脸。文章详细解释了关键参数的作用及调整方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用OpenCV实现简单的人脸识别,基于静态图像。

1、材料准备:找到OpenCV提供的人脸训练模型文件。可以通过

https://github.com/opencv/opencv/tree/master/data/haarcascades

下载OpenCV源代码文件,在其中opencv-master\data\haarcascades目录下找到各种xml文件,全部复制出来,放在代码同级目录下新建的cascades文件夹中。如果是通过pip安装的OpenCV,可以在python安装路径\Lib\site-packages\cv2\data下找到。

2、实现代码:

from cv2 import cv2
#加载人脸训练模型
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
face_cascade.load('C:/SOURCE/python/OpenCV/facedetect/cascades/haarcascade_frontalface_default.xml')
#加载影像并转为灰度图
img = cv2.imread('C:/Users/admin/Desktop/test/face.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#进行人脸检测
faces = face_cascade.detectMultiScale(gray,1.2,5)
#显示检测结果,用绿色方框围绕识别到的人脸
for (x,y,w,h) in faces:
    img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
cv2.namedWindow('faces detected!')
cv2.imshow('faces detected!',img)
#保存结果图像
cv2.imwrite('C:/Users/admin/Desktop/test/facesdetect.png',img)
cv2.waitKey()
cv2.destroyAllWindows()     

3、测试

原图:

运行结果:

4、分析。其中核心代码 face_cascade.detectMultiScale(gray,1.2,1),第一个参数为输入图像(灰度图);第二个参数为每次迭代的压缩率,参数值要大于1.0,否则报错,值越大,检出人脸越少,可以根据实际检测图像进行调整;第三个参数为最小临近值,取值大于等于0,即检测到人脸后超过一定距离才会进行检测。经过不同参数测试,图像中人脸有部分始终无法检测,也存在部分区域被错误识别为人脸,估计是受训练模型的限制,如果用更多的人脸图像进行训练,结果精度应该会有所提高。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TheMatrixs

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值