首先讲解一下“基于python3+OpenCV实现人脸和眼睛识别”的完整攻略:
-
安装 OpenCV
首先需要安装 OpenCV 库,可以通过命令行输入以下命令进行安装:pip install opencv-python
-
获取人脸和眼睛识别的模型文件
OpenCV 中自带了人脸和眼睛识别的模型文件,这些文件保存在opencv/data/haarcascades
文件夹下,可以直接使用。 -
加载图像
使用 OpenCV 加载图像,可以使用cv2.imread(path)
函数加载该路径下的图像文件。这里将加载两张图片,分别是test1.jpg
和test2.jpg
。
import cv2
img1 = cv2.imread('test1.jpg')
img2 = cv2.imread('test2.jpg')
- 实现人脸和眼睛识别
使用cv2.CascadeClassifier()
函数来调用 Haar级联分类器 对象,从而识别出人脸和眼睛。其中,可以通过detectMultiScale()
函数设置具体的识别参数。
face_cascade = cv2.CascadeClassifier('opencv/data/haarcascades/haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('opencv/data/haarcascades/haarcascade_eye.xml')
faces = face_cascade.detectMultiScale(gray, 1.3, 5) # 在灰度图上检测全景人脸
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) # 在图像中标出人脸位置
roi_gray = gray[y:y+h, x:x+w] # 精确定位人脸位置
roi_color = img[y:y+h, x:x+w]
# 在人脸的区域中检测眼睛
eyes = eye_cascade.detectMultiScale(roi_gray)
for (ex, ey, ew, eh) in eyes:
cv2.rectangle(roi_color, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 2) # 在图像中标出眼睛位置
- 显示图像
使用cv2.imshow()
函数来显示已经绘制好的图片,并通过cv2.waitKey()
函数等待按下键盘任意键,最后通过cv2.destroyAllWindows()
函数关闭图像窗口。
cv2.imshow('Test1', img1)
cv2.imshow('Test2', img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
接下来,我将通过两个示例说明如何使用上述攻略实现人脸和眼睛识别。
示例一:单张图片人脸和眼睛识别
以下是单张图片的实现示例代码:
import cv2
# 加载图像
img = cv2.imread('test1.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 人脸和眼睛识别
face_cascade = cv2.CascadeClassifier('opencv/data/haarcascades/haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('opencv/data/haarcascades/haarcascade_eye.xml')
faces = face_cascade.detectMultiScale(gray, 1.3, 5) # 在灰度图上检测全景人脸
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) # 在图像中标出人脸位置
roi_gray = gray[y:y+h, x:x+w] # 精确定位人脸位置
roi_color = img[y:y+h, x:x+w]
# 在人脸的区域中检测眼睛
eyes = eye_cascade.detectMultiScale(roi_gray)
for (ex, ey, ew, eh) in eyes:
cv2.rectangle(roi_color, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 2) # 在图像中标出眼睛位置
# 显示图像
cv2.imshow('Single Face Detection', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
示例二:视频流实时人脸和眼睛识别
以下是通过打开摄像头并实时检测人脸和眼睛的示例代码:
import cv2
# 读取摄像头
cap = cv2.VideoCapture(0)
# 人脸和眼睛识别
face_cascade = cv2.CascadeClassifier('opencv/data/haarcascades/haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('opencv/data/haarcascades/haarcascade_eye.xml')
while True:
ret, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5) # 在灰度图上检测全景人脸
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) # 在图像中标出人脸位置
roi_gray = gray[y:y+h, x:x+w] # 精确定位人脸位置
roi_color = img[y:y+h, x:x+w]
# 在人脸的区域中检测眼睛
eyes = eye_cascade.detectMultiScale(roi_gray)
for (ex, ey, ew, eh) in eyes:
cv2.rectangle(roi_color, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 2) # 在图像中标出眼睛位置
# 显示图像
cv2.imshow('Realtime Face Detection', img)
# 等待按下键盘上的“q”键退出程序
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头并销毁所有窗口
cap.release()
cv2.destroyAllWindows()
以上就是“基于python3+OpenCV实现人脸和眼睛识别”的完整攻略,以及两个示例演示。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于python3+OpenCV实现人脸和眼睛识别 - Python技术站