本文将详细介绍如何使用OpenCV和Python编写50行代码实现人脸检测功能。在此之前,你需要在你的电脑上安装好Python3
、OpenCV
和numpy
库。如果你没有安装这些库,你可以在命令行中使用以下命令进行安装:
# 安装Python3
sudo apt-get install python3
# 安装OpenCV
pip install opencv-python
# 安装numpy
pip install numpy
下面就让我们开始吧。
import cv2
import numpy as np
在这一步中,我们导入了OpenCV和numpy库。
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
在这一步中,我们将训练好的haar级联分类器加载到了内存中,这个分类器可以用于检测出人脸。
img = cv2.imread('my_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),(255,0,0),2)
在这一步中,我们使用矩形框标记出图像中每张人脸。
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这一步中,我们展示了最终的检测结果,包含了标记出的人脸。
下面是完整代码:
import cv2
import numpy as np
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
img = cv2.imread('my_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),(255,0,0),2)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
接下来我会给出两个示例说明如何使用本文介绍的人脸检测代码功能:
import cv2
import numpy as np
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
img = cv2.imread('my_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),(255,0,0),2)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
import numpy as np
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),(255,0,0),2)
cv2.imshow('frame',frame)
if cv2.waitKey(1) == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
以上便是如何使用50行Python代码实现人脸检测功能的完整攻略了。