yolov8 人脸识别 python
时间: 2025-01-03 08:22:05 浏览: 33
### 使用YOLOv8实现人脸识别的Python代码示例
为了利用YOLOv8进行人脸识别,通常需要先安装必要的库并加载预训练模型。下面提供了一个完整的Python代码示例来展示如何使用YOLOv8执行人脸检测。
#### 安装依赖项
首先,确保已安装`ultralytics`库以及其他可能需要用到的包:
```bash
pip install ultralytics opencv-python-headless numpy
```
#### 加载YOLOv8模型
接下来,在脚本中导入所需的模块,并初始化YOLOv8模型实例:
```python
from ultralytics import YOLO
import cv2
model = YOLO('yolov8n-face.pt') # 加载轻量级版本的人脸检测模型[^1]
```
#### 执行预测
定义函数来进行图像输入处理以及调用模型完成推理过程:
```python
def detect_faces(image_path):
img = cv2.imread(image_path)
results = model(img, size=640)[0] # 对图片做推断,指定输入尺寸为640×640像素
faces = []
for result in results.xyxy:
if int(result[-1]) == 0: # 假设类别索引0对应于'face'
x_min, y_min, x_max, y_max = map(int, result[:4])
face_img = img[y_min:y_max, x_min:x_max].copy()
faces.append(face_img)
return faces
```
此部分逻辑会读取给定路径下的图片文件作为输入数据源;通过调用`model()`方法传入待测样本后获取到包含边界框坐标的输出结果列表;最后筛选出标记为人脸的目标区域裁剪保存至faces数组内返回。
#### 显示结果
可以编写辅助功能用于可视化最终效果:
```python
def show_detected_faces(faces):
for i, face in enumerate(faces):
cv2.imshow(f'Detected Face {i}', face)
key = cv2.waitKey(0) & 0xFF
if key == ord('q'):
cv2.destroyAllWindows()
if __name__ == '__main__':
detected_faces = detect_faces('./test_image.jpg')
show_detected_faces(detected_faces)
```
上述程序片段实现了简单的图形界面交互方式查看所提取出来的每一张人脸子图窗口直到按下键盘上的‘Q’键关闭所有显示窗体结束整个流程运行。
阅读全文