用python框出多个指定图片中的人脸并且保存
时间: 2024-03-25 07:38:41 浏览: 13
要实现这个需求需要用到人脸检测和人脸识别技术。可以使用开源库dlib和OpenCV来实现。
首先需要安装dlib库。在终端中输入以下命令:
```
pip install dlib
```
然后需要下载dlib库中的人脸检测器模型文件shape_predictor_68_face_landmarks.dat,可以从dlib的官网下载,也可以在GitHub上找到。下载好后将其放在代码同级目录下。
接下来可以编写代码,示例代码如下:
```python
import dlib
import cv2
detector = dlib.get_frontal_face_detector() # 初始化人脸检测器
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat") # 初始化人脸特征点检测器
# 读取图片
img = cv2.imread("test.jpg")
# 将图片转为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 人脸检测
faces = detector(gray)
# 循环处理每张人脸
for i, face in enumerate(faces):
# 人脸识别
shape = predictor(gray, face)
# 提取人脸区域
left = face.left()
top = face.top()
right = face.right()
bottom = face.bottom()
face_img = img[top:bottom, left:right]
# 保存人脸图片
cv2.imwrite(f"face_{i}.jpg", face_img)
# 在原图中框出人脸区域
cv2.rectangle(img, (left, top), (right, bottom), (0, 255, 0), 2)
# 显示原图
cv2.imshow("img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码可以读取一张图片,检测其中的人脸,将每张人脸区域保存为单独的图片,并在原图中框出人脸区域。
需要注意的是,这里只是一个简单的示例,可能无法处理所有的情况,如果要实现更复杂的功能,还需要根据具体需求进行修改。