譯者| 布加迪
審校| 重樓
出於幾個原因,您可能會使用人臉模糊來隱藏影片或影像中的人臉。隱私和安全問題是最主要的原因。大多數影片分享平台和影片編輯軟體都內建了人臉模糊功能。
您可以使用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中文網其他相關文章!

白平衡是一项相机功能,可根据照明条件调整演色性。此iPhone设置可确保白色物体在照片或视频中显示为白色,从而补偿由于典型照明而导致的任何颜色变化。如果您想在整个视频拍摄过程中保持白平衡一致,可以将其锁定。在这里,我们将指导您如何为iPhone视频保持固定的白平衡。如何在iPhone上锁定白平衡必需:iOS17更新。(检查“常规>软件更新”下的“设置”>)。在iPhone上打开“设置”应用。在“设置”中,向下滚动并选择“相机”。在“相机”屏幕上,点击“录制视频”。在这

我们可以使用Mutagen和Python中的eyeD3模块访问音频文件的元数据。对于视频元数据,我们可以使用电影和Python中的OpenCV库。元数据是提供有关其他数据(例如音频和视频数据)的信息的数据。音频和视频文件的元数据包括文件格式、文件分辨率、文件大小、持续时间、比特率等。通过访问这些元数据,我们可以更有效地管理媒体并分析元数据以获得一些有用的信息。在本文中,我们将了解Python提供的一些用于访问音频和视频文件元数据的库或模块。访问音频元数据一些用于访问音频文件元数据的库是-使用诱变

ppt视频换个电脑就无法播放是因为路径不对,其解决办法:1、将PPT和视频放入U盘的同一个文件夹内;2、双击打开该PPT,找到想要插入视频的页数,点击“插入”按钮;3、在弹出的对话框内选择想要插入的视频即可。

视频切片授权是指在视频服务中,将视频文件分割成多个小片段并进行授权的过程。这种授权方式能提供更好的视频流畅性、适应不同网络条件和设备,并保护视频内容的安全性。通过视频切片授权,用户可以更快地开始播放视频,减少等待和缓冲时间,视频切片授权可以根据网络条件和设备类型动态调整视频参数,提供最佳的播放效果,视频切片授权还有助于保护视频内容的安全性,防止未经授权的用户进行盗播和侵权行为。

如何使用Golang将多个图片转换为视频随着互联网的发展和智能设备的普及,视频成为了一种重要的媒体形式。有时候我们可能需要将多个图片转换为视频,以便展示图片的连续变化或者制作幻灯片。本文将介绍如何使用Golang编程语言将多个图片转换为视频。在开始之前,请确保你已经安装了Golang以及相关的开发环境。步骤1:导入相关的包首先,我们需要导入一些相关的Gola

在iOS17中,当您FaceTime通话某人无法接听时,您可以留下视频或音频信息,具体取决于您使用的通话方式。如果您使用的是FaceTime视频,则可以留下视频信息,如果您使用的是FaceTime音频,则可以留下音频信息。您所要做的就是以通常的方式与某人进行FaceTime。未接来电后,您将看到“录制视频”选项,该选项可让您创建消息。录制完视频后,您会看到视频的预览,如果效果不佳,还可以选择重新录制。以下是在运行iOS17的设备上留下FaceTime消息的工作原理,以未接视频通话为例,在Face

随着互联网的不断发展,视频已经成为了人们日常生活中必不可少的娱乐方式之一。为了给用户提供更好的视频观看体验,许多网站和应用程序都开始使用视频播放器,使得用户可以在网页中直接观看视频。而Vue作为目前非常流行的前端框架之一,也提供了很多简便且实用的方法来实现视频播放器。下面,我们将简要介绍一下在Vue中实现视频播放器的方法。一、使用HTML5的video标签H

你输入文字,让AI来生成视频,这种想法在以前只出现在人们的想象中,现在,随着技术的发展,这种功能已经实现了。近年来,生成式人工智能在计算机视觉领域引起巨大的关注。随着扩散模型的出现,从文本Prompt生成高质量图像,即文本到图像的合成,已经变得非常流行和成功。最近的研究试图通过在视频领域复用文本到图像扩散模型,将其成功扩展到文本到视频生成和编辑的任务。虽然这样的方法取得了可喜的成果,但大部分方法需要使用大量标记数据进行大量训练,这可能对许多用户来讲太过昂贵。为了使视频生成更加廉价,JayZhan


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

禪工作室 13.0.1
強大的PHP整合開發環境