在Ubuntu下使用Python和OpenCV实现人脸检测,你可以按照以下步骤操作:
pip install opencv-python
face_detection.py
,并添加以下代码:import cv2
# 加载预训练的人脸检测器
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# 打开摄像头
cap = cv2.VideoCapture(0)
while True:
# 读取摄像头帧
ret, frame = cap.read()
if not ret:
break
# 将帧转换为灰度图
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
# 在帧上绘制人脸矩形框
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
# 显示结果帧
cv2.imshow('Face Detection', frame)
# 按q键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头资源并关闭窗口
cap.release()
cv2.destroyAllWindows()
这段代码首先加载了一个预训练的人脸检测器(Haar级联分类器),然后打开摄像头并进入一个循环,不断地读取摄像头帧并进行人脸检测。在检测到人脸时,它会在帧上绘制矩形框,并显示结果帧。当按下q键时,循环结束并释放摄像头资源。
注意:为了运行上述代码,你需要确保你的系统上已经安装了OpenCV的Haar级联分类器数据文件。这些文件通常位于/usr/share/opencv/data/
目录下。如果它们不存在,你可能需要从OpenCV的GitHub仓库下载它们,并将它们复制到正确的位置。
另外,上述代码使用的是Haar级联分类器,它是一种较旧的人脸检测方法。对于更先进的人脸检测算法,你可以考虑使用基于深度学习的方法,例如MTCNN、SSD或YOLO等。这些方法通常需要更多的计算资源和训练数据,但它们在检测精度和速度方面通常优于Haar级联分类器。