如何使用Python實(shí)時(shí)模糊人臉
譯文?譯者 | 布加迪
審校 | 重樓
出于幾個(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)行以下命令來安裝所需的庫。將庫作為以空格分隔的列表來傳遞。
您將使用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。
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地址和端口號。
要對輸入執(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)換成灰度以便處理,最后檢測輸入中的人臉,并將其與矩形綁定。
該函數(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ì)算出的半徑,在中心位于人臉矩形的黑色圖像上繪制白圓。最后,它模糊白圓上的圖像。
該函數(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ù)返回的幀的大小,并顯示輸出。
該函數(shù)還在用戶按下q鍵時(shí)終止輸出顯示。
7、運(yùn)行程序
確保在運(yùn)行腳本時(shí)先運(yùn)行main函數(shù)。如果將腳本作為另一個(gè)程序中的模塊導(dǎo)入,該條件將為假。
這允許您將腳本作為模塊來使用或作為獨(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/