wordpress如何开发手机,扬中网站优化哪家好,python 做爬虫网站,腾讯 wordpress文章目录 一、人脸检测流程介绍二、用于人脸检测的关键方法1.加载分类器#xff08;cv2.CascadeClassifier()#xff09;2.检测图像中的人脸#xff08;cv2.CascadeClassifier.detectMultiscale()#xff09; 三、代码实现 一、人脸检测流程介绍
下面是一张含有多个人脸的… 文章目录 一、人脸检测流程介绍二、用于人脸检测的关键方法1.加载分类器cv2.CascadeClassifier()2.检测图像中的人脸cv2.CascadeClassifier.detectMultiscale() 三、代码实现 一、人脸检测流程介绍
下面是一张含有多个人脸的图片 第一步读取图片后将图片转换成灰度图第二步在灰度图中进行特征检测并检测出各个人脸的特征信息第三步将各个人脸的特征信息保存下来第四部根据检测出的人脸的特征信息在原图中用矩形框框出每个人的脸部区域 最终的结果如下
二、用于人脸检测的关键方法
1.加载分类器cv2.CascadeClassifier()
在OpenCV库中提供了多个用于检测人脸的Haar特征的级联分类器并以xml文件的形式存储这些文件是预训练的意味着它已经被训练好了可以直接用于检测图像中的人脸下面链接中是对人脸检测的Haar特征和级联分类器的介绍 https://blog.csdn.net/weixin_73504499/article/details/142883884?spm1001.2014.3001.5501 如何找到这些xml文件呢 这些 xml文件存在我们pycharm的环境中通过下图中的步骤找到 找到这些文件后通过 cv2.CascadeClassifier 加载分类器 cv2.CascadeClassifier 是 OpenCV 库中用于加载和训练级联分类器的一个类
2.检测图像中的人脸cv2.CascadeClassifier.detectMultiscale() 在OpenCV中cv2.CascadeClassifier 类有一个非常重要的方法叫做 detectMultiScale()这个方法专门用于在图像中检测对象。detectMultiScale() 方法会搜索图像中所有可能匹配预训练分类器如Haar或LBP特征分类器的对象并返回这些对象的位置通常以矩形框的形式。 下面是 detectMultiScale() 方法的一些关键参数和它们的含义 image要搜索的输入图像通常是一个灰度图像因为颜色信息对于Haar特征来说不是必需的而且灰度图像处理起来更快。scaleFactor图像缩放的比例因子。在检测过程中图像会按照这个比例因子逐步缩小以便在不同的尺度上搜索对象。例如scaleFactor1.05 意味着每次迭代图像都会缩小5%。minNeighbors每个候选矩形框需要有多少个相邻的矩形框来保留该框。这个参数有助于消除错误的检测。例如如果设置为3那么只有当至少有3个矩形框重叠时该框才会被保留。flags一些可选的标志用于修改检测过程的行为。例如cv2.CASCADE_SCALE_IMAGE 会告诉分类器在检测之前自动缩放图像但通常这个标志是默认启用的所以不需要显式设置。minSize 和 maxSize对象的最小和最大可能尺寸以像素为单位。这些参数可以帮助减少不必要的搜索区域并加快检测速度。返回值detectMultiScale() 方法返回一个矩形框的列表每个框都是一个 (x, y, w, h) 元组其中 (x, y) 是矩形左上角的坐标w 和 h 分别是矩形的宽度和高度
三、代码实现
完整代码如下import cv2 加载图片并将图片转换为灰度图
image cv2.imread(face.png)
gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 加载分类器
# haarcascade_frontalface_default.xml 用于检测正面人脸的Haar特征的级联分类器
faceCascade cv2.CascadeClassifier(haarcascade_frontalface_default.xml) 使用分类器对人脸进行检测
faces faceCascade.detectMultiScale(gray, scaleFactor1.05, minNeighbors9, minSize(8, 8))
print(发现{}张人脸.format(len(faces)))
print(其位置分别是, faces) 遍历每一个人脸的特征并用矩形框将人脸部位框出
for (x, y, w, h) in faces:cv2.rectangle(image, (x, y), (x w, y h), (0, 255, 0), 2) 显示结果
cv2.imshow(result, image)
cv2.waitKey(0)
cv2.destroyAllWindows()结果如下