下面是“Python OpenCV3实现人脸识别(Windows)”的详细攻略。
1. 准备条件
在开始使用Python OpenCV3实现人脸识别前,我们需要先安装以下软件:
- Python 3.x
- OpenCV 3
- numpy模块
其中,Python可以到官网下载对应版本进行安装,OpenCV 3 可以到官网下载安装包进行安装,numpy模块可以使用pip安装。安装好以上软件后,我们就可以开始实现人脸识别了。
2. 实现过程
2.1 加载人脸模型
在使用OpenCV实现人脸识别前,我们需要先加载人脸模型。OpenCV提供了一个已训练好的人脸识别分类器,可以在官网下载。下载好分类器后,我们将它存放在代码所在的目录下。
下面是加载人脸模型的代码:
import cv2
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
2.2 读取图片
然后,我们需要读取一张图片,并准备进行人脸识别。下面是读取图片的代码:
import cv2
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
2.3 检测人脸
读取完图片后,我们需要使用上一步加载的人脸模型来进行人脸检测。下面是检测人脸的代码:
import cv2
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
img = cv2.imread('image.jpg')
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), (0, 255, 0), 2)
cv2.imshow('img', img)
cv2.waitKey()
cv2.destroyAllWindows()
在这段代码中,我们使用detectMultiScale
函数来进行人脸检测,并通过循环将检测到的人脸用矩形框出来。
2.4 完整代码
下面是示范代码,包括了加载人脸模型、读取图片、检测人脸等全部内容:
import cv2
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
img = cv2.imread('image.jpg')
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), (0, 255, 0), 2)
cv2.imshow('img', img)
cv2.waitKey()
cv2.destroyAllWindows()
2.5 示例说明
我们假设有一张名为“test.jpg”的图片,需要进行人脸识别。现在我们就可以使用上述代码来实现人脸识别。
具体过程如下:
- 将示例代码中的
“image.jpg”
修改为“test.jpg”
,即修改为需要识别的图片名称。 - 打开命令行窗口,进入到代码所在的目录。
- 执行代码:
python face_recognition.py
在代码运行完后,我们就可以看到识别结果的图片,并在其中的人脸部分用矩形框出来了。
另外一个示例是,我们可以使用摄像头来进行实时人脸识别。操作步骤和前面类似,只需将img
变量改为摄像头采集到的图像即可。完整代码如下:
import cv2
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
这里我们使用cap = cv2.VideoCapture(0)
打开第一个摄像头,通过循环实现实时人脸识别,按 q
键退出程序。
以上就是“Python OpenCV3实现人脸识别(Windows)”的详细攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python opencv3实现人脸识别(windows) - Python技术站