摘要:美國(guó)開國(guó)領(lǐng)袖們?nèi)绻吹矫绹?guó)民眾只能在希拉里和川普中選擇,估計(jì)要集體氣活過(guò)來(lái)。本教程由發(fā)布在實(shí)驗(yàn)樓,完整教程及在線練習(xí)地址川普撞臉希拉里基于的面部特征交換一教程介紹內(nèi)容簡(jiǎn)介通過(guò)庫(kù)來(lái)實(shí)現(xiàn)人臉面部特征交換。
話說(shuō)這次美國(guó)大選可謂賺足了眼球,在美國(guó)史上,恐怕沒(méi)有哪一年的總統(tǒng)大選會(huì)像今年一樣詭譎和熱鬧。 美國(guó)開國(guó)領(lǐng)袖們?nèi)绻吹矫绹?guó)民眾只能在希拉里和川普中選擇,估計(jì)要集體氣活過(guò)來(lái)。
作為一個(gè)閑得蛋疼的吃瓜群眾,今天就拿這對(duì)冤家做例子,看如何利用OpenCV來(lái)實(shí)現(xiàn)將希拉里的臉安在川普臉上。當(dāng)然,你還可以舉一反三,把吳彥祖的臉安到自己臉上試試效果......
項(xiàng)目簡(jiǎn)介:通過(guò) OpenCV 庫(kù)來(lái)實(shí)現(xiàn)人臉面部特征交換,其實(shí)就是將第二張人臉的眼睛、鼻子和嘴巴通過(guò)程序自動(dòng)裁剪適配并覆蓋到第一張人臉上,并且為了使得修改后的照片看著更加自然,我們還需要調(diào)整皮膚顏色。
本教程由one_magician發(fā)布在實(shí)驗(yàn)樓,完整教程及在線練習(xí)地址:川普撞臉希拉里(基于 OpenCV 的面部特征交換)
通過(guò) OpenCV 庫(kù)來(lái)實(shí)現(xiàn)人臉面部特征交換。
1.2 知識(shí)點(diǎn)人臉特征交換程序設(shè)計(jì)思路
OpenCV 庫(kù)的使用
dlib 庫(kù)的使用
docopt 庫(kù)的使用
1.3 效果圖(自帶護(hù)目鏡)這是原圖。
轉(zhuǎn)換之后的結(jié)果是這樣的。
前方高能
前方高能
前方高能
前方高能
二、環(huán)境配置所謂“工欲善其事,必先利其器”,開始編寫代碼之前我們需要先把用到的庫(kù)安裝好。
依賴的庫(kù)有:
dlib
opencv
docopt
2.1 安裝 dlibdlib 是一個(gè)基于 C++ 編寫的擴(kuò)展庫(kù),包含有許多常用的機(jī)器學(xué)習(xí)算法以及圖像處理函數(shù)。并且還支持大量的數(shù)值計(jì)算,如矩陣、大整數(shù)隨機(jī)運(yùn)算等。但是在編譯安裝 dlib 之前我們還需要先給系統(tǒng)裝上各種依賴環(huán)境,步驟如下。
安裝 Python 的開發(fā)庫(kù) python3-dev 和 python3-setuptools 。
$ sudo apt-get update $ sudo apt-get install python3-dev python3-setuptools
另外還要安裝 Boost Python 開發(fā)文件,它為 Python 編程提供了簡(jiǎn)單易用的 C++ 函數(shù)庫(kù)接口。
$ sudo apt-get install libboost-python-dev
dlib 本來(lái)可以直接通過(guò) pip3 指令進(jìn)行編譯安裝,但是由于虛擬機(jī)的內(nèi)存資源不足無(wú)法完成編譯,因此我這里提供一份編譯好的 dlib 動(dòng)態(tài)庫(kù)。可以通過(guò) wget 命令進(jìn)行下載,并將 dlib.so 復(fù)制到 /usr/local/lib/python3.4/dist-packages/ 目錄之下,這樣就可以全局使用該模塊了。
$ wget http://labfile.oss.aliyuncs.com/courses/686/dlib.so $ sudo cp dlib.so /usr/local/lib/python3.4/dist-packages/2.2 安裝 OpenCV
OpenCV 是一款功能強(qiáng)大的跨平臺(tái)計(jì)算機(jī)視覺(jué)開源庫(kù),可以用于解決人機(jī)交互、物體檢測(cè)、人臉識(shí)別等領(lǐng)域的問(wèn)題。庫(kù)本身是采用 C++ 編寫的,但是同時(shí)也對(duì) Python, Java, C# 等語(yǔ)言提供接口支持。
本門課程考慮到 OpenCV 的安裝過(guò)程相對(duì)較繁瑣且耗時(shí)較長(zhǎng),因此實(shí)驗(yàn)環(huán)境已經(jīng)配置好 OpenCV 3.1 的環(huán)境。
2.3 安裝 docoptdocopt 是 Python 的一個(gè)第三方參數(shù)解析庫(kù),可以根據(jù)使用者提供的文檔描述自動(dòng)生成解析器。因此使用者可以用它來(lái)定義交互參數(shù)與解析參數(shù)。
安裝 docopt 庫(kù)的過(guò)程就非常簡(jiǎn)單了。
$ sudo pip3 install docopt三、設(shè)計(jì)思路
我們先來(lái)考慮一下這個(gè)程序需要完成的兩大個(gè)功能。
支持從命令行獲取指定圖像路徑
讀取指定圖像并進(jìn)行處理保存
事實(shí)上,第一點(diǎn)要求通過(guò)借助 docopt 庫(kù)可以非常快速便捷地構(gòu)建命令行解析器,具體用法在后續(xù)將會(huì)詳細(xì)介紹。
而第二點(diǎn)才是我們真正需要關(guān)注的問(wèn)題。想象一下在現(xiàn)實(shí)生活中,給你兩張人像照片,現(xiàn)在要求你將他們的臉部特征交換一下(本次實(shí)驗(yàn)中的臉部特征主要指眉毛、眼睛、鼻子和嘴巴組合而成的部位),那么最簡(jiǎn)單的方法就是將第二個(gè)人臉部特征部分剪下拼接到第一個(gè)人的照片上。所以事實(shí)上,我們的程序?qū)崿F(xiàn)也是在模仿這一個(gè)過(guò)程。但是程序并不知道哪些部分是眉毛、眼睛、鼻子或者嘴巴,在電腦看來(lái)這些圖片僅僅是一連串二進(jìn)制數(shù),所以我們還需要利用 dlib 庫(kù)中的機(jī)器學(xué)習(xí)算法來(lái)幫助我們檢測(cè)并標(biāo)記這些特征部位。
所以我們的處理方法主要分為以下幾個(gè)步驟。
借助 dlib 庫(kù)檢測(cè)出圖像中的臉部特征
計(jì)算將第二張圖像臉部特征對(duì)齊到一張圖像臉部特征的變換矩陣
綜合考慮兩張照片的面部特征獲得合適的面部特征掩碼
根據(jù)第一張圖像人臉的膚色修正第二張圖像
通過(guò)面部特征掩碼拼接這兩張圖像
保存圖像
好吧,也許步驟看起來(lái)有些多,暫時(shí)看不懂也沒(méi)關(guān)系,跟著教程把項(xiàng)目做一遍,你將會(huì)對(duì)這些概念慢慢熟悉起來(lái)。
本項(xiàng)目教程的詳細(xì)步驟和全部代碼,可以在實(shí)驗(yàn)樓查看并在線完成:川普撞臉希拉里(基于 OpenCV 的面部特征交換)
項(xiàng)目來(lái)源于 https://github.com/matthewearl/faceswap ,該項(xiàng)目基于 MIT 許可證。
系統(tǒng)化的Python學(xué)習(xí)路徑:Python研發(fā)工程師
更多經(jīng)典練手項(xiàng)目:全部項(xiàng)目
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/44243.html
摘要:前言過(guò)年了,來(lái)點(diǎn)有趣的東西最近一直在嘗試通過(guò)如何視頻,怎么捕捉視頻的行為,給視頻加點(diǎn)好玩的東西比如給視頻加一個(gè)胡子以下記錄一下最近的玩具點(diǎn)擊這里看自己的效果需要允許攝像頭呀效果效果大概如下就是給視頻的臉上加個(gè)胡子我手機(jī)上有防藍(lán)光的膜,各位大 前言 過(guò)年了,來(lái)點(diǎn)有趣的東西 最近一直在嘗試通過(guò)web如何DIY視頻,怎么捕捉視頻的行為,給視頻加點(diǎn)好玩的東西,比如給視頻加一個(gè)胡子? 以下記錄一...
閱讀 2444·2021-09-22 15:41
閱讀 1460·2021-08-19 10:54
閱讀 1769·2019-08-23 15:11
閱讀 3408·2019-08-23 10:23
閱讀 1436·2019-08-22 16:28
閱讀 806·2019-08-22 15:11
閱讀 749·2019-08-22 14:53
閱讀 723·2019-08-22 13:49