在这篇文章中,我想谈谈使用Python OpenCV进行眼睛检测。所以在本文中我们使用Haar级联分类器(Haar Cascade )。

Haar Cascade 是什么?

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

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

这是使用OpenCV进行Python眼睛检测的完整代码:

import cv2

image = cv2.imread("www.linuxmi.com.jpg")
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
eyes = eye_cascade.detectMultiScale(image, scaleFactor = 1.2, minNeighbors = 5.3)

for (ex,ey,ew,eh) in eyes:
            cv2.rectangle(image,(ex,ey),(ex+ew,ey+eh),(255,0,0),5)

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

cv2.waitKey(0)
cv2.destroyAllWindows()

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

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

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

eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')

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

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

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

eyes = eye_cascade.detectMultiScale(image, scaleFactor = 1.2, minNeighbors = 5.3)

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

for (ex,ey,ew,eh) in eyes:
cv2.rectangle(image,(ex,ey),(ex+ew,ey+eh),(255,0,0),5)

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

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

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

发表评论

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