利用opencv進行換臉

2021-07-25 15:07:58 字數 1076 閱讀 6979

關於換臉的什麼背景什麼的,我也就不提了,直接說一下換臉所需要的步驟吧,在這裡我用的是opencv和之前我用的clm框架,clm還是進行人臉關鍵點檢測,利用opencv進行臉部替換和顏色風格統一。

接下來是利用opencv換臉的一般步驟:

臉部關鍵點檢測

因為我們要變換的兩張臉的形狀一般是不同的,所以我們需要對原始的臉進行乙個變形,但是在變形後我也不希望臉部變得無法識別,所以我們首先用clm進行面部關鍵點檢測。在這裡我們需要注意的僅僅只有面部的邊界點。

2.尋找面部凸包

凸包的概念在opencv中有,在這裡就是將邊界點順序相連形成多邊形。

vectorhullindex;

// points is of type vectorobtained

// using dlib.

convexhull(points, hullindex, false, false);

// hullindex is a vector of indices of points

// that form the convex hull.

3.三角剖分

這個步驟就是利用面部邊界點進行三角剖分。通過這種方式將面部區域細分乘多個微小區域。

4.三角形的仿射變換

之前提到了,我們需要覆蓋的臉部很多都是不一樣形狀的,所以在這裡我們要根據這些三角區域進行仿射變換,最終能夠合理的覆蓋到原始臉部。

無縫轉殖

上面我們變換之後會發現顏色很尷尬,一點都不和諧,在這種情況下,我們就需要用到opencv裡面的seamlessclone這個函式,這個函式的效果就是使得mask內的區域色調什麼的盡可能和邊界之外的部分保持一致。

Python實現頭像換臉(AI換臉)

相關變數輸出結果 變數的輸出位置以及相關描述已經寫在 注釋中 author dazhi 2021 3 19 19 42 首先是導入庫 import json import requests import json import base64 第一步 獲取人臉關鍵點 deffind face impa...

利用OpenCV進行顏色檢測

rgb通道與hsv通道在顏色檢測中的區別 hsv是相對rgb的另一種顏色表示方式,它相對rgb而言,是一種比較直觀的顏色模型。其中顏色的引數分別是 色調 h 飽和度 s 明度 v 色調h 用角度度量,取值範圍為0 360 從紅色開始按逆時針方向計算,紅色為0 綠色為120 藍色為240 它們的補色是...

基於opencv級聯分類器對臉和眼睛進行檢測

基於c opencv的人臉檢測 1 建立分類器物件 cascadeclassifier face cascade,eyes cascade 2 載入資料的路徑 載入本地opencv資料夾自帶的xml檔案 string face cascade name d opencv opencv sources...