import cv2
import numpy as np
# Step 1. Define detect function
face_cascade = cv2.CascadeClassifier('haarcascades/haarcascade_frontalface_default.xml')
face_cascade.load(r'E:\Python3.6.6\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')
# 将这段代码的地址改为自己从opencv包安装的地址
def detect_face(img):
img_copy = img.copy()
face_rects = face_cascade.detectMultiScale(img_copy)
for (x, y, w, h) in face_rects:
cv2.rectangle(img_copy, (x, y), (x+w, y+h), (0, 50, 255), 3)
return img_copy
# Step 2. Call the cam
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
ok, frame = cap.read()
while True:
ret, frame = cap.read(0)
frame = detect_face(frame)
cv2.imshow('Video Face Detection', frame)
c = cv2.waitKey(1)
if c == 27:
break
cap.release()
cv2.destroyAllWindows()
想要退出的时候可用esc键
如果你想通过对图片上的人脸进行检测可以用下面这段代码:
img = cv2.imread('test.jpg') # 读取你的图片
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plt.imshow(img_gray,cmap='gray')
# Load Cascade filter
face_cascade = cv2.CascadeClassifier('haarcascades/haarcascade_frontalface_default.xml')
face_cascade.load(r'E:\Python3.6.6\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')
# 跟上面一样,这里需要修改一下
# Create the face detecting function
def detect_face(img):
img_2 = img.copy()
face_rects = face_cascade.detectMultiScale(img_2,
scaleFactor = 1.1,
minNeighbors =3)
for (x, y, w, h) in face_rects:
cv2.rectangle(img_2, (x, y), (x+w, y+h), (0, 50, 255), 3)
return img_2
# Detect the face
roi_detected = detect_face(img_gray)
plt.imshow(roi_detected, cmap = 'gray')
plt.axis('off')