在此Python OpenCV文章中,我想向您展示使用HaarCascade分类器进行微笑检测。因此,在本文中,我使用图像,因此您需要在工作目录中有一个图像。

现在我们将对HaarCascade分类器进行简单介绍

什么是HaarCascade分类器?

因此,Haar Cascade基本上是一个分类器,用于从源中检测对其进行训练的对象。Haar级联也是通过将正像叠加在一组负像上来训练的。培训通常在服务器上和各个阶段进行。通过使用高质量图像并增加训练分类器的阶段数量,可以获得更好的结果。

您还可以使用github上可用的预定义Haar级联

因此,现在这是使用HaarCascade在Python OpenCV中进行微笑检测的完整代码

import cv2

image = cv2.imread("www.linuxmi.com.jpg")
smile_cascade = cv2.CascadeClassifier('haarcascade_smile.xml')
smiles  = smile_cascade.detectMultiScale(image, scaleFactor = 1.2, minNeighbors = 53)

for (sx, sy, sw, sh) in smiles:
            cv2.rectangle(image, (sx, sy), ((sx + sw), (sy + sh)), (0, 255,0), 5)

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

cv2.waitKey(0)
cv2.destroyAllWindows()

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

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

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

smile_cascade = cv2.CascadeClassifier(‘haarcascade_smile.xml’)

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

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

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

smiles = smile_cascade.detectMultiScale(image, scaleFactor = 1.2, minNeighbors = 53)

在这段代码中,我们希望为图像中的微笑绘制矩形。

for (sx, sy, sw, sh) in smiles:
cv2.rectangle(image, (sx, sy), ((sx + sw), (sy + sh)), (0, 255,0), 5)

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

cv2.imshow(“www.linuxmi.com,Smile Detected”, image)

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

发表评论

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