如何使用 Python 中的 OpenCV 模糊图像中的人脸?
原文:https://www.geeksforgeeks.org/如何使用 python 中的-opencv 在图像中模糊人脸/
先决条件: OpenCV
OpenCV 是一个巨大的开源库,用于计算机视觉、机器学习和图像处理。它可以处理图像和视频来识别物体、人脸,甚至是人类的笔迹。当它与各种库集成时,如【Numpy】这是一个高度优化的数值运算库,那么你的武器库中的武器数量就会增加,即在 Numpy 中可以做的任何运算都可以与 OpenCV 结合。
本文讨论了如何使用 OpenCV 模糊图像中的人脸。
要求:
除了 OpenCV 模块,要获得这个功能我们还需要 哈尔级联正面人脸分类器需要下载。它以 XML 文件的形式提供,用于检测图像中的人脸
接近
- 导入模块
- 使用 OpenCV 读取图像
- 绘制它
- 检测面部
- 在检测到的人脸上画一个矩形
- 模糊矩形
- 显示输出
下面是实现。
输入图像:
原始:my_img.jpg
蟒蛇 3
# Importing libraries
import numpy as np
import cv2
import matplotlib.pyplot as plt
# A function for plotting the images
def plotImages(img):
plt.imshow(img, cmap="gray")
plt.axis('off')
plt.style.use('seaborn')
plt.show()
# Reading an image using OpenCV
# OpenCV reads images by default in BGR format
image = cv2.imread('my_img.jpg')
# Converting BGR image into a RGB image
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# plotting the original image
plotImages(image)
face_detect = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
face_data = face_detect.detectMultiScale(image, 1.3, 5)
# Draw rectangle around the faces which is our region of interest (ROI)
for (x, y, w, h) in face_data:
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
roi = image[y:y+h, x:x+w]
# applying a gaussian blur over this new rectangle area
roi = cv2.GaussianBlur(roi, (23, 23), 30)
# impose this blurred image on original image to get final image
image[y:y+roi.shape[0], x:x+roi.shape[1]] = roi
# Display the output
plotImages(image)
输出:
模糊图象