自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何使用Python實時模糊人臉

譯文
人工智能
不妨通過本文來探索計算機視覺世界,嘗試一項流行的安全功能:模糊圖像的某個部分。

?譯者 | 布加迪

審校 | 重樓

出于幾個原因,您可能使用人臉模糊來隱藏視頻或圖像中的人臉。隱私和安全問題是最主要的原因。大多數視頻分享平臺和視頻編輯軟件都內置了人臉模糊功能。

您可以使用Python、OpenCV和NumPy庫從頭創(chuàng)建自己的人臉模糊程序。

1、建立環(huán)境

要完成本文的學習,您需要熟悉Python的基礎知識,并對NumPy庫的使用有一番基本的了解。

打開任何您熟悉的Python IDE。創(chuàng)建一個虛擬環(huán)境,用來安裝所需的庫。創(chuàng)建一個新的Python文件。進入到終端,運行以下命令來安裝所需的庫。將庫作為以空格分隔的列表來傳遞。

pip install OpenCV-python NumPy

您將使用OpenCV獲取并預處理視頻輸入,使用NumPy處理數組。

圖片

一旦您安裝了庫,等待IDE更新項目骨干部分。更新完成、環(huán)境準備就緒后,您就可以開始編碼了。

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

2、導入所需的庫

首先,導入OpenCV庫和NumPy庫。這將使您能夠調用和使用它們支持的任何函數。導入OpenCV-python作為cv2。

import cv2
import numpy as np

OpenCV-python模塊使用名稱cv2作為OpenCV社區(qū)建立的約定。OpenCV- Python是OpenCV庫的Python包裝器,用C++編寫。

3、獲取輸入

創(chuàng)建一個變量,并初始化VideoCapture對象。如果您想使用計算機的主攝像頭作為輸入源,應傳遞0作為參數。要使用連接到計算機上的外部攝像頭,請傳遞1。要對預先錄制的視頻執(zhí)行人臉模糊處理,請改而傳遞視頻的路徑。若要使用遠程攝像頭,傳遞攝像頭的URL,其中含有IP地址和端口號。

cap = cv2.VideoCapture(0)

要對輸入執(zhí)行人臉模糊,您需要這三個函數:

  • 對輸入進行預處理的函數。
  • 將模糊輸入中的人臉的函數。
  • 將控制程序流程并顯示輸出的main函數。

4、視頻輸入預處理

創(chuàng)建一個輸入預處理函數,將輸入視頻的每一幀作為其輸入。初始化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、模糊人臉

創(chuàng)建一個模糊函數,將模糊輸入中的人臉。該函數將調整大小的幀和預處理函數返回的包圍人臉的矩形列表作為輸入。循環(huán)處理人臉矩形。計算每個矩形的中心和模糊圓的半徑。通過將所有像素初始化為0,創(chuàng)建一個與調整大小的幀具有相同尺寸的黑色圖像。使用計算出的半徑,在中心位于人臉矩形的黑色圖像上繪制白圓。最后,它模糊白圓上的圖像。

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、控制程序流程

創(chuàng)建一個主函數,充當程序的入口點。然后它將控制程序流程。該函數將開始一個無限循環(huán),不斷捕獲視頻輸入的幀。調用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、人臉模糊的實際應用

您可以在許多類型的應用環(huán)境中運用人臉模糊來保護隱私。街景和地圖服務使用模糊技術來模糊圖像中人物的臉部。執(zhí)法部門使用人臉模糊技術來保護證人的身份。

許多視頻分享平臺也為用戶整合了人臉模糊功能。比較人臉模糊在這些領域的使用可以幫助您觀察其他平臺如何整合這項技術。

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

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2023-11-23 12:43:53

人臉識別程序

2024-11-01 07:00:00

人臉識別Python機器學習

2024-09-30 06:04:02

人臉識別Python機器學習

2018-05-08 14:25:22

Pythondlib人臉檢測

2021-03-16 15:41:08

人臉識別人工智能數據

2023-12-13 09:00:00

2018-12-29 09:38:16

Python人臉檢測

2023-07-20 08:00:00

可視化數據Python

2023-10-07 09:00:00

人臉檢測Web應用程序

2024-06-12 12:57:12

2023-11-17 09:35:58

2020-06-11 16:55:16

TensorRT人臉識別人工智能

2012-02-08 16:54:58

ibmdw

2022-01-10 07:17:02

安全工具CFB模糊測試

2024-06-12 08:10:08

2024-01-26 08:00:00

Python數據管道

2024-02-28 08:00:00

人工智能Slackbot

2021-07-28 09:53:53

FalconEye注入安全檢測

2021-03-22 10:53:42

AI 數據人工智能

2017-03-20 08:58:02

Python人臉識別AI
點贊
收藏

51CTO技術棧公眾號