目录
1、建立环境
2、导入所需的库
3、获取输入
4、视频输入预处理
5、模糊人脸
6、控制程序流程
7、运行程序
8、人脸模糊的实际应用
首页 科技周边 人工智能 如何使用Python实时模糊人脸

如何使用Python实时模糊人脸

Apr 07, 2023 pm 04:43 PM
python 视频 人脸

​译者 | 布加迪

审校 | 重楼

出于几个原因,您可能使用人脸模糊来隐藏视频或图像中的人脸。隐私和安全问题是最主要的原因。大多数视频分享平台和视频编辑软件都内置了人脸模糊功能。

您可以使用Python、OpenCV和NumPy库从头创建自己的人脸模糊程序。

1、建立环境

要完成本文的学习,您需要熟悉Python的基础知识,并对NumPy库的使用有一番基本的了解。

打开任何您熟悉的Python IDE。创建一个虚拟环境,用来安装所需的库。创建一个新的Python文件。进入到终端,运行以下命令来安装所需的库。将库作为以空格分隔的列表来传递。

pip install OpenCV-python NumPy
登录后复制

您将使用OpenCV获取并预处理视频输入,使用NumPy处理数组。

图片

一旦您安装了库,等待IDE更新项目骨干部分。更新完成、环境准备就绪后,您就可以开始编码了。

注意:完整的源代码可以在GitHub代码库中找到(https://github.com/makeuseofcode/Face-Blurring)。

2、导入所需的库

首先,导入OpenCV库和NumPy库。这将使您能够调用和使用它们支持的任何函数。导入OpenCV-python作为cv2。

import cv2
import numpy as np
登录后复制

OpenCV-python模块使用名称cv2作为OpenCV社区建立的约定。OpenCV- Python是OpenCV库的Python包装器,用C++编写。

3、获取输入

创建一个变量,并初始化VideoCapture对象。如果您想使用计算机的主摄像头作为输入源,应传递0作为参数。要使用连接到计算机上的外部摄像头,请传递1。要对预先录制的视频执行人脸模糊处理,请改而传递视频的路径。若要使用远程摄像头,传递摄像头的URL,其中含有IP地址和端口号。

cap = cv2.VideoCapture(0)
登录后复制

要对输入执行人脸模糊,您需要这三个函数:

  • 对输入进行预处理的函数。
  • 将模糊输入中的人脸的函数。
  • 将控制程序流程并显示输出的main函数。

4、视频输入预处理

创建一个输入预处理函数,将输入视频的每一帧作为其输入。初始化CascadeClassifier类,您将用这个类检测人脸。将帧大小调整为640 * 640像素。将调整大小的帧转换成灰度以便处理,最后检测输入中的人脸,并将其与矩形绑定。

def image_preprocess(frame):
face_detector = cv2.CascadeClassifier(cv2.data.haarcascades
+ 'haarcascade_frontalface_default.xml')

resized_image = cv2.resize(frame, (640, 640))

gray_image = cv2.cvtColor(resized_image,
cv2.COLOR_BGR2GRAY)

face_rects = face_detector.detectMultiScale(
gray_image, 1.04, 5, minSize=(20, 20))

return resized_image, face_rects
登录后复制

该函数返回一个元组,含有调整大小的图像和表示检测到的人脸的矩形列表。

5、模糊人脸

创建一个模糊函数,将模糊输入中的人脸。该函数将调整大小的帧和预处理函数返回的包围人脸的矩形列表作为输入。循环处理人脸矩形。计算每个矩形的中心和模糊圆的半径。通过将所有像素初始化为0,创建一个与调整大小的帧具有相同尺寸的黑色图像。使用计算出的半径,在中心位于人脸矩形的黑色图像上绘制白圆。最后,它模糊白圆上的图像。

def face_blur(resized_frame, face_rects):
for (x, y, w, h) in face_rects:
# Specifying the center and radius
# of the blurring circle
center_x = x + w // 3
center_y = y + h // 3
radius = h // 1

# creating a black image having similar
# dimensions as the frame
mask = np.zeros((resized_frame.shape[:3]), np.uint8)

# draw a white circle in the face region of the frame
cv2.circle(mask, (center_x, center_y), radius,
 (255, 255, 255), -1)

# blurring the whole frame
blurred_image = cv2.medianBlur(resized_frame, 99)

# reconstructing the frame:
# - the pixels from the blurred frame if mask > 0
# - otherwise, take the pixels from the original frame
resized_frame = np.where(mask > 0, blurred_image,
 resized_frame)

return resized_frame
登录后复制

该函数使用NumPy where()函数在模糊过程中重建帧。

6、控制程序流程

创建一个主函数,充当程序的入口点。然后它将控制程序流程。该函数将开始一个无限循环,不断捕获视频输入的帧。调用cap对象的读取方法,从摄像头读取帧。

然后,该函数将帧传递给预处理函数,并将返回值传递给另一个函数face_blur,以获得模糊后的图像。然后,它调整模糊函数返回的帧的大小,并显示输出。

def main():
while True:
success, frame = cap.read()
resized_input, face_rects = image_preprocess(frame)
blurred_image = face_blur(resized_input, face_rects)

# Diplaying the blurred image
cv2.imshow("Blurred image", cv2.resize(blurred_image, (500, 500)))

if cv2.waitKey(1) == ord("q"):
break
登录后复制

该函数还在用户按下q键时终止输出显示。

7、运行程序

确保在运行脚本时先运行main函数。如果将脚本作为另一个程序中的模块导入,该条件将为假。

if __name__ == "__main__":
main()
登录后复制

这允许您将脚本作为模块来使用或作为独立程序来运行。当程序运行时,您应该看到类似这样的输出:

图片

人脸已经过模糊处理,辨认不出来。

8、人脸模糊的实际应用

您可以在许多类型的应用环境中运用人脸模糊来保护隐私。街景和地图服务使用模糊技术来模糊图像中人物的脸部。执法部门使用人脸模糊技术来保护证人的身份。

许多视频分享平台也为用户整合了人脸模糊功能。比较人脸模糊在这些领域的使用可以帮助您观察其他平台如何整合这项技术。

原文链接:https://www.makeuseof.com/python-blur-human-faces-real-time/

以上是如何使用Python实时模糊人脸的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1659
14
CakePHP 教程
1416
52
Laravel 教程
1310
25
PHP教程
1258
29
C# 教程
1232
24
PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

在PHP和Python之间进行选择:指南 在PHP和Python之间进行选择:指南 Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP和Python:深入了解他们的历史 PHP和Python:深入了解他们的历史 Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

Python vs. JavaScript:学习曲线和易用性 Python vs. JavaScript:学习曲线和易用性 Apr 16, 2025 am 12:12 AM

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

sublime怎么运行代码python sublime怎么运行代码python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中运行 Python 代码,需先安装 Python 插件,再创建 .py 文件并编写代码,最后按 Ctrl B 运行代码,输出会在控制台中显示。

vscode在哪写代码 vscode在哪写代码 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中编写代码简单易行,只需安装 VSCode、创建项目、选择语言、创建文件、编写代码、保存并运行即可。VSCode 的优点包括跨平台、免费开源、强大功能、扩展丰富,以及轻量快速。

visual studio code 可以用于 python 吗 visual studio code 可以用于 python 吗 Apr 15, 2025 pm 08:18 PM

VS Code 可用于编写 Python,并提供许多功能,使其成为开发 Python 应用程序的理想工具。它允许用户:安装 Python 扩展,以获得代码补全、语法高亮和调试等功能。使用调试器逐步跟踪代码,查找和修复错误。集成 Git,进行版本控制。使用代码格式化工具,保持代码一致性。使用 Linting 工具,提前发现潜在问题。

notepad 怎么运行python notepad 怎么运行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中运行 Python 代码需要安装 Python 可执行文件和 NppExec 插件。安装 Python 并为其添加 PATH 后,在 NppExec 插件中配置命令为“python”、参数为“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通过快捷键“F6”运行 Python 代码。

See all articles