用Python将有人脸的图片删除
数码 3
本文将从多个方面详细阐述使用Python将有人脸的图片删除的方法。
在使用Python进行图像处理时,我们需要使用到一些开源库,比如OpenCV、Pillow、numpy等。在开始编写代码之前,我们需要先安装这些库。
pip install opencv-python
pip install pillow
pip install numpy
在使用Python将有人脸的图片删除前,我们需要先找出图片中的人脸。OpenCV提供了一个强大的人脸识别库,可以识别图片中的人脸。
以下是使用OpenCV识别图片中人脸的示例代码:
import cv2
faceCascade=cv2.CascadeClassifier("haarcascade_frontalface_default.xml") # 加载人脸分类器
img=cv2.imread("test.jpg") # 加载图片
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 转灰度图像
faces=faceCascade.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=5,minSize=(30,30),flags=cv2.CASCADE_SCALE_IMAGE) # 识别人脸
for(x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2) # 在人脸周围画一个矩形框
cv2.imshow("Faces found",img) # 显示图片
cv2.waitKey(0) # 等待按键
在识别出图片中的人脸后,我们可以使用Pillow库对图片进行编辑,删除识别出的人脸。
以下是使用Pillow删除图片中识别出的人脸的示例代码:
from PIL import Image
img=Image.open("test.jpg") # 加载图片
for(x,y,w,h) in faces:
region=img.crop((x,y,x+w,y+h)) # 抠出人脸部分
img.paste((255,255,255),box=(x,y,x+w,y+h)) # 用白色将抠出的人脸部分覆盖掉
img.show() # 显示图片
以下是使用Python将有人脸的图片删除的完整示例代码:
import cv2
from PIL import Image
# 加载人脸分类器
faceCascade=cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
# 加载图片
img=cv2.imread("test.jpg")
# 转灰度图像
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# 识别人脸
faces=faceCascade.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=5,minSize=(30,30),flags=cv2.CASCADE_SCALE_IMAGE)
# 删除图片中的人脸
img=Image.open("test.jpg")
for(x,y,w,h) in faces:
region=img.crop((x,y,x+w,y+h)) # 抠出人脸部分
img.paste((255,255,255),box=(x,y,x+w,y+h)) # 用白色将抠出的人脸部分覆盖掉
img.show() # 显示图片