如何使用 Python 模糊图像中的人脸

模糊视频或图像的特定部分是一项非常常见的任务,具有多种用例。

本文我们将专注于模糊人脸,但为了做到这一点,我们首先必须检测这些人脸。

你可能还记得,在之前的文章中,我们已经讨论了如何检测图像中的人脸,我们将在此处使用该代码的一部分。

阅读之前的文章:https://medium.com/artificialis/build-a-security-camera-with-python-and-opencv-83e69f676216

入门

首先,安装所需的包:

pip install opencv-python

现在,打开一个新文件并导入它们。

import cv2

最后,让我们定义一些变量供以后使用

image = cv2.imread('image.jpg')

h, w = image.shape[:2]

kernel_width = (w//7) | 1
kernel_height = (h//7) | 1

face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

加载一个图像并定义它的宽度和高度。然后,我们定义内核宽度和高度(我们将使用高斯模糊,其内核取决于图像的高度和宽度)。

在最后一行,我们正在加载 Cascade 分类器,就像上面链接的教程一样。

检测人脸并对其进行模糊处理

为了检测人脸,我们将图像提供给上面定义的级联分类器,然后我们将遍历每个检测到的人脸以应用高斯模糊。

faces = face_cascade.detectMultiScale(image, 1.1, 5)

for x, y, w, h in faces:
    face_roi = image[y:y+h, x:x+w]
    blurred_face = cv2.GaussianBlur(face_roi, (kernel_width, kernel_height), 0)
    image[y:y+h, x:x+w] = blurred_face

cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

与安全摄像头教程中我们在检测到的人脸周围绘制边界框不同,我们现在循环检测并且只模糊检测到的人脸。

cv2.GaussianBlur() 方法使用高斯滤波器模糊图像,将中值应用于内核大小内的中心像素。它接受输入图像作为第一个参数,高斯核大小作为第二个参数中的元组,以及 sigma 参数作为第三个参数。

关于内核大小,文档说它必须是奇数和正整数,我已将原始图像除以 7,因此它取决于图像形状并执行按位或以确保结果值为奇数。

当然,你可以设置自己的内核大小,它越大,图像越模糊。

2f99b098a8a34d0385207046ea06ac2a.png

结果就是这样!

结论

你学习了如何模糊图像或视频中检测到的每个人脸。

现在,你可以通过尝试平滑角度来获得一些乐趣,以获得椭圆形的模糊形状,从而获得更准确的图像。

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

4404b8a5e32a62a6b2c41ebdd7e652dd.png

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2022年5月11日
下一篇 2022年5月11日

相关推荐