在这篇Python OpenCV文章中,将介绍简单的人脸检测。所以在这篇文章中,我们基本上使用了HaarCascade分类器。人脸检测属于计算机视觉的范畴,早期人们的主要研究方向是人脸识别,即根据人脸来识别人物的身份,后来在复杂背景下的人脸检测需求越来越大,人脸检测也逐渐作为一个单独的研究方向发展起来。

HaarCascade是什么?

Haar级联基本上是一个分类器,用于从源头检测它所训练的对象。哈尔级联的训练方法是将正图像叠加在一组负图像上。培训通常在服务器和不同的阶段进行。通过使用高质量的图像和增加分类器所训练的阶数,可以得到更好的结果。

你也可以使用Github上提供的预定义Haar Cascades

以下是Python OpenCV人脸检测的完整代码

import cv2

image = cv2.imread("www.linuxmi.com.jpg")

face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")

faces = face_cascade.detectMultiScale(image, scaleFactor = 1.2, minNeighbors = 6)

print("Faces Detected", len(faces))

for x,y,w,h in faces:
    cv2.rectangle(image, (x,y), (x+w, y+h), (0,0,255), 5)

cv2.imshow("www.linuxmi.com , Face Detected", image)

cv2.waitKey(0)
cv2.destroyAllWindows()

在这行代码中,我们已经加载了图像,你需要在工作目录中有一个图像

image = cv2.imread("www.linuxmi.com.jpg")

这是为了加载我们已经复制到目录中的Haar级联分类器

face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")

detecMultiScale()函数用于检测目标,如果在图像中找到一个人脸,将以x,y,w,h的形式返回。它需要一些参数。

ScaleFactor:这是一个参数,用于指定在每个图像缩放时图像大小会减少多少。

minNeighbors:参数指定每个候选矩形应该保留多少邻居,这个参数将影响检测到的面孔的质量。

faces = face_cascade.detectMultiScale(image, scaleFactor = 1.2, minNeighbors = 6)

在这个代码中,我们想在图像的眼睛中绘制矩形

for x,y,w,h in faces:
cv2.rectangle(image, (x,y), (x+w, y+h), (0,0,255), 5)

在这行代码中,我们希望显示图像

cv2.imshow("www.linuxmi.com , Face Detected", image)

运行完整的代码,结果如下:

发表评论

电子邮件地址不会被公开。 必填项已用*标注