如何使用 Python 模糊图像中的人脸
模糊视频或图像的特定部分是一项非常常见的任务,具有多种用例。
本文我们将专注于模糊人脸,但为了做到这一点,我们首先必须检测这些人脸。
你可能还记得,在之前的文章中,我们已经讨论了如何检测图像中的人脸,我们将在此处使用该代码的一部分。
阅读之前的文章:https://medium.com/artificialis/build-a-security-camera-with-python-and-opencv-83e69f676216
入门
首先,安装所需的包:
pip install opencv-python
现在,打开一个新文件并导入它们。
cv2
最后,让我们定义一些变量供以后使用
image = cv2.imread(
'image.jpg')
h, w = image.shape[:
2]
kernel_width = (w//
7) |
1kernel_height = (h//
7) |
1face_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,因此它取决于图像形状并执行按位或以确保结果值为奇数。
当然,你可以设置自己的内核大小,它越大,图像越模糊。
结果就是这样!
结论
你学习了如何模糊图像或视频中检测到的每个人脸。
现在,你可以通过尝试平滑角度来获得一些乐趣,以获得椭圆形的模糊形状,从而获得更准确的图像。
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。