跳轉到

🔰 影像範例 - AR面具(多種切換)

AR面具(多種切換)



AR面具(多種切換)

🎦 Demo影片



📄 Py4t程式碼

  • 說明1:程式所需檔案,下載後需將檔案解壓縮,在與程式相同的資料夾
  • 說明2:每次重新偵測臉部時,即會切換
from 視覺模組 import *
import itertools

攝影機 = 設置影像擷取(後端='DSHOW')
偵測器 = 設置FaceMesh()
面具清單 = [None]
已換 = False

png陣列 = 讀取png影像('anonymous.png')
面具臉型 = 讀取面具臉型('anonymous.csv', png陣列)
面具清單.append((png陣列, 面具臉型))

png陣列 = 讀取png影像('white_mask.png')
面具臉型 = 讀取面具臉型('white_mask.csv', png陣列)
面具清單.append((png陣列, 面具臉型))

png陣列 = 讀取png影像('opera_red.png')
面具臉型 = 讀取面具臉型('opera_red.csv', png陣列)
面具清單.append((png陣列, 面具臉型))

png陣列 = 讀取png影像('anime.png')
面具臉型 = 讀取面具臉型('anime.csv', png陣列)
面具清單.append((png陣列, 面具臉型))

面具循環 = itertools.cycle(面具清單)
面具項目 = next(面具循環)

while True :
    陣列 = 擷取影像(攝影機)
    陣列 = 左右翻轉(陣列)
    結果 = 偵測器.process(陣列)
    if 結果 :
        已換 = False
        if 面具項目:
            特徵清單 = 取出Landmarks(結果)
            轉換png陣列 = 面具transform(
               來源影像=面具項目[0],
               臉型對應=面具項目[1],
               目標影像=陣列,
               偵測結果=結果)
            貼上png(陣列,轉換png陣列)
    elif not 結果 and not 已換:
        面具項目 = next(面具循環)
        已換 = True

    顯示影像(陣列)