成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實時“人臉”模糊!實戰教程

人工智能 人臉識別 開發
手動打碼是一件非常繁瑣的事情, 所以我們嘗試使用程序自動去執行這樣子的操作。我們可以使用Opencv、Mediapipe和Python,實現實時模糊人臉。

大家好,今天跟大家分享一個實戰的教程。

老規矩,先看效果(明確一下目標):

隨著人臉識別技術的發展,給我們的日常生活帶來了許多的便利,但是同樣的也存在隱私的問題。以及可能被不法分子用于做一些違法事情。

所以很多視頻博主,都會給路人打碼。但是手動打碼是一件非常繁瑣的事情,對于單幀圖片還算簡單,但是假設視頻的幀率是 25FPS,即一秒中有25幀圖片,那么一個幾分鐘的視頻,其工作量也非常的可怕。

因此我們嘗試使用程序自動去執行這樣子的操作!

我們可以使用Opencv、Mediapipe和Python,實現實時模糊人臉。

我們可以分兩步完成:

  • 在打碼之前,首先確定人臉位置
  • 取出臉,模糊它,然后將處理后的人臉放回到視頻幀中(視頻處理類似)

(留個作業:如何實現對除了本人以外的其他人打碼?)

1、在打碼之前,首先確定人臉位置

老規矩,首先配置一下環境,安裝必要的庫(OpenCV 和  MediaPipe)

pip install opencv-python
pip install mediapipe

在 MediaPipe 庫中提供了人臉關鍵點檢測的模塊。

詳細的內容可以參考:https://google.github.io/mediapipe/solutions/face_mesh.html

當然在該項目的代碼中,也提供人臉關鍵點檢測的代碼。

“facial_landmarks.py”的文件:

人臉關鍵點檢測效果圖

下面我們就一起來寫一下這部分的代碼:

  • 首先導入必要的庫以及用于人臉關鍵點檢測的模塊:
import cv2
import mediapipe as mp
import numpy as np
from facial_landmarks import FaceLandmarks

# Load face landmarks
fl = FaceLandmarks()
  • 然后使用檢測出來的人臉關鍵點最外圍的一圈關鍵點繪制一個多邊形(臉部輪廓)。這里使用opencv 中的convxhull() 函數可以實現:
    # 1. Face landmarks detection
    landmarks = fl.get_facial_landmarks(frame)
    convexhull = cv2.convexHull(landmarks)

繪制完成后的結果如下所示:

之后使用上面所提取到的人臉關鍵點坐標創建mask,用提取我們在視頻幀中感興趣的區域:

    # 2. Face blurrying
    mask = np.zeros((height, width), np.uint8)
    # cv2.polylines(mask, [convexhull], True, 255, 3)
    cv2.fillConvexPoly(mask, convexhull, 255)

結果如下所示:

得到這個mask,我們就可以進一步對人臉進行模糊(打碼)處理。

打碼的操作,這里使用的是OpenCV 中的cv2.blur() 函數:

    # Extract the face
    frame_copy = cv2.blur(frame_copy, (27, 27))
    face_extracted = cv2.bitwise_and(frame_copy, frame_copy, mask=mask)

結果:

目前,我們已經實現對人臉進行打碼操作,剩下的就是對人臉以外的區域進行提取,并合并成最終的結果即可!

對人臉以外的區域進行提取(背景),實際上對上面的mask 進行取反即可。

背景提取:

    # Extract background
    background_mask = cv2.bitwise_not(mask)
    background = cv2.bitwise_and(frame, frame, mask=background_mask)

從圖像的細節可以看出,背景是完全可見的,但面部區域已經變成黑色了。這是我們將在下一步中應用模糊人臉的空白區域。

最后一步,將上面兩步獲取的人臉mask 和背景進行相加即可,這里使用cv2.add() 即可實現我們的目標:

    # Final result
    result = cv2.add(background, face_extracted)

結果:

這是對一幀圖片進行處理。

2、取出臉,模糊它,然后將處理后的人臉放回到視頻幀中

上面的操作都是在單幀圖片上進行處理的,如果我們需要出來的是視頻的話,其實原理是完全一樣的,只不過是將一個視頻拆成一系列的圖片即可。

稍微做一些修改:

(1)輸入文件 (圖片 ---> 視頻)

cap = cv2.VideoCapture("person_walking.mp4")

(2)對輸入的視頻幀,做一個循環遍歷:

while True:
    ret, frame = cap.read()
    frame = cv2.resize(frame, None, fx=0.5, fy=0.5)
    frame_copy = frame.copy()
    height, width, _ = frame.shape

...
責任編輯:趙寧寧 來源: 小白玩轉Python
相關推薦

2023-04-03 14:02:32

Python人臉視頻

2023-10-07 09:00:00

人臉檢測Web應用程序

2024-11-01 07:00:00

人臉識別Python機器學習

2024-09-30 06:04:02

人臉識別Python機器學習

2012-04-30 20:24:43

Android API

2021-03-16 15:41:08

人臉識別人工智能數據

2014-04-02 10:29:12

iOS 7模糊效果

2022-07-26 14:53:10

WebSocket網絡通信協議

2016-09-26 08:09:53

人臉識別seetaface開源

2024-06-12 08:10:08

2021-03-22 10:53:42

AI 數據人工智能

2021-06-03 08:10:30

SparkStream項目Uv

2022-08-16 22:39:01

Argo CDKubernetes

2019-09-27 14:33:34

2018-12-29 09:38:16

Python人臉檢測

2020-09-01 17:19:36

數據監控建模

2021-05-10 11:08:00

人工智能人臉識別

2021-02-08 12:59:12

Git 控制系統

2013-12-18 15:21:12

Cocostudio

2019-07-02 08:00:00

JavaScriptWeb對象
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久久岛一牛影视 | 久久综合久久自在自线精品自 | 亚洲精品aⅴ | 亚洲高清在线观看 | 国产免费一级一级 | 男女羞羞视频在线 | 毛片高清 | 国产精品视频999 | 欧美日韩亚 | 欧美成视频| 国产一级黄色网 | www.男人天堂.com| 7777精品伊人久久精品影视 | 国产欧美精品在线观看 | 久久大| 欧美手机在线 | 国产高清精品一区二区三区 | 国产欧美精品一区二区三区 | 亚洲精品9999久久久久 | 欧美福利视频 | 噜噜噜噜狠狠狠7777视频 | 一区二区三区欧美在线观看 | 久久综合久久综合久久 | 91精品国产自产在线老师啪 | 精品网 | av色在线 | 日韩午夜在线播放 | 欧美成人激情视频 | 97精品超碰一区二区三区 | 亚洲天堂色 | 久久成人免费视频 | 中文字幕视频在线 | 欧美成人免费 | 免费一级欧美在线观看视频 | 亚洲啊v| 天天爱av | 日本一区二区三区免费观看 | 国产亚洲欧美在线 | a在线免费观看视频 | 亚洲欧美激情精品一区二区 | 精品在线看 |