使用 Python 进行面部和眼睛检测

人工智能等各类编程培训资料整理,所有资源无秘无压缩-购买会员

通过使用 OpenCV,你可以识别面部和眼睛等对象,并使用 Haar 级联算法实时跟踪它们。

Haar Cascade 是一种分类器,用于检测其训练对象。我们将使用 Face cascade和 Eyes cascade。你可以使用 Google 查找你可能想要检测的各种 Haar Cascades。

安装 OpenCVpipinstallopencv-python

从照片中检测

我假设你已经从上面的链接下载了haarcascade_eye.xml和haarcascade_frontalface_default.xml,并将这些文件放在项目的数据目录中。

人脸检测

我们将在下图中检测人脸。

首先导入OpenCV库、Image和haarcascade_frontalface_default.xml。

importcv2

face_cascade=cv2.CascadeClassifier(.Datahaarcascade_frontalface_default.xml)

nadia=cv2.imread(./Data/Nadia_Murad.jpg,0)

通过添加 0,图像在导入过程中变为黑白。

现在让我们创建一个函数来识别面部并在其周围绘制一个正方形。

defdetect_face(img):

face_img=img.copy()

face_rect=face_cascade.detectMultiScale(face_img,scaleFactor=1.2,minNeighbors=5)

for(x,y,w,h)inface_rect:

cv2.rectangle(face_img,(x,y),(x+w,y+h),(255,255,255),10)

returnface_img

现在图像已传递给函数,将在脸部周围创建一个方框。此外,我们将构建一个显示图像,并在按下“Q”时结束的 while 循环。

result=detect_face(nadia)

whileTrue:

cv2.imshow(,result)

code=cv2.waitKey(10)

ifcode==ord(q):

break

运行该文件以查看结果。

眼睛检测

检测眼睛与检测面部非常相似。只需将你的haarcascade_frontalface_default.xml文件替换为haarcascade_eye.xml.

这是代码。

importcv2

eye_cascade=cv2.CascadeClassifier(.Datahaarcascade_eye.xml)

nadia=cv2.imread(./Data/Nadia_Murad.jpg,0)

defdetect_eyes(img):

face_img=img.copy()

eyes=eye_cascade.detectMultiScale(face_img,scaleFactor=1.2,minNeighbors=5)

for(x,y,w,h)ineyes:

cv2.rectangle(face_img,(x,y),(x+w,y+h),(255,255,255),10)

returnface_img

result=detect_eyes(nadia)

whileTrue:

cv2.imshow(,result)

code=cv2.waitKey(10)

ifcode==ord(q):

break

运行该文件以查看结果。

从相机检测

在这里,我们将使用 Haar Cascade 的分类器,让我们的相机不仅可以检测而且可以跟踪我们的面部和眼睛。

人脸检测

让我们首先从人脸检测开始。导入 OpenCV 库和haarcascade_frontalface_default.xml文件。我们将使用与上面相同的detect_face函数。

importcv2

face_cascade=cv2.CascadeClassifier(.Datahaarcascade_frontalface_default.xml)

defdetect_face(img):

face_img=img.copy()

face_rect=face_cascade.detectMultiScale(face_img,scaleFactor=1.2,minNeighbors=5)

for(x,y,w,h)inface_rect:

cv2.rectangle(face_img,(x,y),(x+w,y+h),(255,255,255),10)

returnface_img

我们将使用一个名为 VideoCapture() 的函数。此函数允许我们打开相机并捕获视频,并将其转换为帧。

现在创建一个 while 循环并将这些帧发送到我们的函数。该函数将返回那些面部周围有方框的帧。

cap=cv2.VideoCapture(0)

whileTrue:

ret,frame=cap.read()

frame=detect_face(frame)

cv2.imshow(FaceDetection,frame)

code=cv2.waitKey(10)

ifcode==ord(q):

break

cap.release()

cv2.destroyAllWindows()

运行该文件以查看结果。

眼睛检测

与人脸检测类似,我们现在将使用haarcascade_eye.xml文件来检测眼睛。导入haarcascade_eye.xml文件并使用与人脸检测相同的代码。

importcv2

eye_cascade=cv2.CascadeClassifier(.Datahaarcascade_eye.xml)

defdetect_eye(img):

eye_img=img.copy()

eye_rect=eye_cascade.detectMultiScale(eye_img,scaleFactor=1.2,minNeighbors=5)

for(x,y,w,h)ineye_rect:

cv2.rectangle(eye_img,(x,y),(x+w,y+h),(255,255,255),10)

returneye_img

cap=cv2.VideoCapture(0)

whileTrue:

ret,frame=cap.read()

frame=detect_eye(frame)

cv2.imshow(EyeDetection,frame)

code=cv2.waitKey(10)

ifcode==ord(q):

break

cap.release()

cv2.destroyAllWindows()

现在运行该文件以查看结果。

结论

OpenCV 是一个非常强大的机器学习库。

源代码:https://github.com/Priyank010/Face-and-Eye-Detection

免责声明: 1、本站信息来自网络,版权争议与本站无关 2、本站所有主题由该帖子作者发表,该帖子作者与本站享有帖子相关版权 3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和本站的同意 4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责 5、用户所发布的一切软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 6、您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 7、请支持正版软件、得到更好的正版服务。 8、如有侵权请立即告知本站,本站将及时予与删除 9、本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章和视频仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
600学习网 » 使用 Python 进行面部和眼睛检测