目錄
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處理陣列。

如何使用Python即時模糊人臉

一旦您安裝了函式庫,等待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()
登入後複製

這允許您將腳本作為模組來使用或作為獨立程式來運行。當程式運行時,您應該會看到類似這樣的輸出:

如何使用Python即時模糊人臉

#人臉已經過模糊處理,辨識不出來。

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)

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語法簡潔,適用於多領域,庫生態系統強大。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

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

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

vs code 可以在 Windows 8 中運行嗎 vs code 可以在 Windows 8 中運行嗎 Apr 15, 2025 pm 07:24 PM

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

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 代碼。

vscode 擴展是否是惡意的 vscode 擴展是否是惡意的 Apr 15, 2025 pm 07:57 PM

VS Code 擴展存在惡意風險,例如隱藏惡意代碼、利用漏洞、偽裝成合法擴展。識別惡意擴展的方法包括:檢查發布者、閱讀評論、檢查代碼、謹慎安裝。安全措施還包括:安全意識、良好習慣、定期更新和殺毒軟件。

See all articles