跳轉到

🔰 範例程式 - 濾鏡貼紙(多種切換)

濾鏡貼紙



濾鏡貼紙(多種切換)

🎦 Demo影片



📄 Py4t程式碼

  • 說明1:程式所需圖檔,下載後需將圖片解壓縮,在與程式相同的資料夾
  • 說明2:使用空白鍵切換
from 視覺模組 import *
import itertools

攝影機 = 設置影像擷取(後端='DSHOW')
偵測器 = 設置FaceMesh()
裝飾清單 = [None]

png陣列 = 讀取png影像('crown.png')
pt1 = (80,160)
pt2 = (170,160)
索引1 = 103
索引2 = 10
裝飾清單.append((png陣列,pt1,pt2,索引1,索引2))

png陣列 = 讀取png影像('dog_ears.png')
pt1 = (150,200)
pt2 = (450,200)
索引1 = 103
索引2 = 332
裝飾清單.append((png陣列,pt1,pt2,索引1,索引2))

png陣列 = 讀取png影像('dog_nose.png')
pt1 = (120,70)
pt2 = (200,70)
索引1 = 166
索引2 = 392
裝飾清單.append((png陣列,pt1,pt2,索引1,索引2))

png陣列 = 讀取png影像('cat_ears.png')
pt1 = (100,220)
pt2 = (500,220)
索引1 = 103
索引2 = 332
裝飾清單.append((png陣列,pt1,pt2,索引1,索引2))

png陣列 = 讀取png影像('eye_mask.png')
pt1 = (230,120)
pt2 = (370,120)
索引1 = 133
索引2 = 362
裝飾清單.append((png陣列,pt1,pt2,索引1,索引2))

png陣列 = 讀取png影像('mustache.png')
pt1 = (116,0)
pt2 = (184,0)
索引1 = 166
索引2 = 392
裝飾清單.append((png陣列,pt1,pt2,索引1,索引2))

裝飾循環 = itertools.cycle(裝飾清單)
裝飾項目 = next(裝飾循環)

while True :
    陣列 = 擷取影像(攝影機)
    陣列 = 左右翻轉(陣列)

    結果 = 偵測器.process(陣列)
    if 結果 and 裝飾項目:
        特徵清單 = 取出Landmarks(結果)
        轉換png陣列 = 兩點transform(
            來源影像=裝飾項目[0],
            來源pt1=裝飾項目[1],
            來源pt2=裝飾項目[2],
            目標影像=陣列,
            目標pt1=特徵清單[裝飾項目[3]],
            目標pt2=特徵清單[裝飾項目[4]])
        貼上png(陣列,轉換png陣列)


    按鍵 = 等待按鍵(20)
    if 按鍵  == ' ':
        裝飾項目 = next(裝飾循環)
    顯示影像(陣列)