偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何使用Python實(shí)時(shí)模糊人臉

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

?譯者 | 布加迪

審校 | 重樓

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

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

1、建立環(huán)境

要完成本文的學(xué)習(xí),您需要熟悉Python的基礎(chǔ)知識,并對NumPy庫的使用有一番基本的了解。

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

pip install OpenCV-python NumPy

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

圖片

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

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

2、導(dǎo)入所需的庫

首先,導(dǎo)入OpenCV庫和NumPy庫。這將使您能夠調(diào)用和使用它們支持的任何函數(shù)。導(dǎo)入OpenCV-python作為cv2。

import cv2
import numpy as np

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

3、獲取輸入

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

cap = cv2.VideoCapture(0)

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

  • 對輸入進(jìn)行預(yù)處理的函數(shù)。
  • 將模糊輸入中的人臉的函數(shù)。
  • 將控制程序流程并顯示輸出的main函數(shù)。

4、視頻輸入預(yù)處理

創(chuàng)建一個(gè)輸入預(yù)處理函數(shù),將輸入視頻的每一幀作為其輸入。初始化CascadeClassifier類,您將用這個(gè)類檢測人臉。將幀大小調(diào)整為640 * 640像素。將調(diào)整大小的幀轉(zhuǎn)換成灰度以便處理,最后檢測輸入中的人臉,并將其與矩形綁定。

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

該函數(shù)返回一個(gè)元組,含有調(diào)整大小的圖像和表示檢測到的人臉的矩形列表。

5、模糊人臉

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

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

該函數(shù)使用NumPy where()函數(shù)在模糊過程中重建幀。

6、控制程序流程

創(chuàng)建一個(gè)主函數(shù),充當(dāng)程序的入口點(diǎn)。然后它將控制程序流程。該函數(shù)將開始一個(gè)無限循環(huán),不斷捕獲視頻輸入的幀。調(diào)用cap對象的讀取方法,從攝像頭讀取幀。

然后,該函數(shù)將幀傳遞給預(yù)處理函數(shù),并將返回值傳遞給另一個(gè)函數(shù)face_blur,以獲得模糊后的圖像。然后,它調(diào)整模糊函數(shù)返回的幀的大小,并顯示輸出。

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

該函數(shù)還在用戶按下q鍵時(shí)終止輸出顯示。

7、運(yùn)行程序

確保在運(yùn)行腳本時(shí)先運(yùn)行main函數(shù)。如果將腳本作為另一個(gè)程序中的模塊導(dǎo)入,該條件將為假。

if __name__ == "__main__":
main()

這允許您將腳本作為模塊來使用或作為獨(dú)立程序來運(yùn)行。當(dāng)程序運(yùn)行時(shí),您應(yīng)該看到類似這樣的輸出:

圖片

人臉已經(jīng)過模糊處理,辨認(rèn)不出來。

8、人臉模糊的實(shí)際應(yīng)用

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

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

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

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2023-11-23 12:43:53

人臉識別程序

2024-11-01 07:00:00

人臉識別Python機(jī)器學(xué)習(xí)

2024-09-30 06:04:02

人臉識別Python機(jī)器學(xué)習(xí)

2023-12-13 09:00:00

2021-03-16 15:41:08

人臉識別人工智能數(shù)據(jù)

2018-05-08 14:25:22

Pythondlib人臉檢測

2023-07-20 08:00:00

可視化數(shù)據(jù)Python

2018-12-29 09:38:16

Python人臉檢測

2020-06-11 16:55:16

TensorRT人臉識別人工智能

2023-11-17 09:35:58

2023-10-07 09:00:00

人臉檢測Web應(yīng)用程序

2024-06-12 12:57:12

2022-01-10 07:17:02

安全工具CFB模糊測試

2021-07-28 09:53:53

FalconEye注入安全檢測

2024-02-28 08:00:00

人工智能Slackbot

2024-06-12 08:10:08

2012-02-08 16:54:58

ibmdw

2024-01-26 08:00:00

Python數(shù)據(jù)管道

2022-08-23 16:27:29

OpenCV人臉識別

2021-07-01 09:32:14

人臉識別AI人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號