python识别人脸并删除该真人图片全部代码
时间: 2024-10-22 09:17:56 浏览: 8
基于 Python 实现的静默活体检测与人脸识别
5星 · 资源好评率100%
Python中识别人脸并删除包含特定人物的所有图片通常涉及两个步骤:人脸识别和图像处理。这里我们将使用OpenCV库进行人脸检测,以及PIL(Pillow)库用于图像操作。请注意,这需要安装`face_recognition`和`Pillow`库,可以使用pip安装:
```python
# 安装所需库
!pip install face_recognition Pillow
import os
import cv2
from PIL import Image
import face_recognition
# 读取图片
def detect_faces_and_remove_person(image_path, target_face_encodings):
# 加载图片
image = face_recognition.load_image_file(image_path)
# 转换为RGB格式 (OpenCV默认为BGR)
rgb_image = image[:, :, ::-1]
# 找到所有人脸的面部编码
face_locations = face_recognition.face_locations(rgb_image)
known_face_encodings = [target_face_encoding for target_face_encoding in target_face_encodings]
# 遍历每一张图片
for i, (top, right, bottom, left) in enumerate(face_locations):
# 确保人脸存在并匹配目标人
if len(known_face_encodings) > i:
match = face_recognition.compare_faces([known_face_encodings[i]], face_recognition.face_encodings(rgb_image[top:bottom, left:right]), tolerance=0.6) # 可调整容忍度
if match[0]:
# 如果找到匹配的人脸,从原图中裁剪出来并保存
cropped_face = rgb_image[top:bottom, left:right]
pil_img = Image.fromarray(cropped_face)
pil_img.save(f'removed_{os.path.basename(image_path)}')
# 删除原始图片
os.remove(image_path)
# 例子中的目标人脸编码(你需要先通过人脸检测得到)
target_face_encodings = [] # 这里填写实际的目标人脸面部编码,通常是通过训练得到的
# 指定要处理的目录及其下的所有图片
image_dir = 'path_to_your_directory'
for filename in os.listdir(image_dir):
if filename.endswith('.jpg') or filename.endswith('.png'): # 检查文件是否是图片
image_path = os.path.join(image_dir, filename)
detect_faces_and_remove_person(image_path, target_face_encodings)
阅读全文