活体检测OpenCV的代码
时间: 2024-12-12 16:11:35 浏览: 4
活体检测(Liveness Detection)通常用于防止面部识别被照片或视频欺骗。在OpenCV中,虽然它本身并不直接提供活体检测的功能,但我们可以借助一些库,如Dlib或Face++等,结合OpenCV进行人脸关键点检测并分析实时变化来实现。以下是一个简单的示例,使用OpenCV配合Dlib进行人脸检测和眼动跟踪,作为活体检测的基本步骤:
```python
import cv2
import dlib
# 加载预训练的人脸检测模型(Haar级联分类器)
face_detector = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# 加载Dlib的人脸关键点预测模型
predictor_path = "shape_predictor_68_face_landmarks.dat"
predictor = dlib.shape_predictor(predictor_path)
cap = cv2.VideoCapture(0) # 使用摄像头
while True:
ret, frame = cap.read()
if not ret:
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = face_detector.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
for (x, y, w, h) in faces:
face_roi = gray[y:y+h, x:x+w]
landmarks = predictor(face_roi)
# 进行人眼位置或其他关键点的检查,比如眨眼速度或眼间距等
# 如果眼睛运动不符合预期,可能是照片或视频
# ...
# 在原图上绘制人脸框和关键点
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
for n in range(0, 68):
cv2.circle(frame, (landmarks.part(n).x, landmarks.part(n).y), 2, (0, 0, 255), -1)
cv2.imshow('Live Face Detection', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
```
阅读全文