目錄
前言
架構與概念
引入
建立人臉模型
人臉辨識
如何判斷
首頁 web前端 js教程 抖音很火紅的圖片選擇題特效,用前端快速實現!

抖音很火紅的圖片選擇題特效,用前端快速實現!

Jan 20, 2023 pm 03:56 PM
前端 抖音 圖片

這篇文章為大家帶來了關於前端圖片特效的相關知識,其中主要給大家介紹前端如何實現一個最近抖音很火的圖片選擇題特效,非常全面詳細,下面一起來看一下,希望對需要的朋友有幫助。

抖音很火紅的圖片選擇題特效,用前端快速實現!

抖音很火紅的圖片選擇題特效,用前端快速實現!

金塊因安全原因沒有在iframe標籤上設定allow="microphone *;camera *"導致攝影機打開失敗!請點擊右上角「查看詳情」查看!或點選下方連結查看

//复制链接预览
https://code.juejin.cn/pen/7160886403805970445
登入後複製

前言

最近抖音特效中有個圖片選擇題特別火,今天就來講一下前端如何實現,下面我主要講一下如何判斷左右擺頭

架構與概念

抽象整體的實作想法如下

抖音很火紅的圖片選擇題特效,用前端快速實現!

#MediaPipe Face Mesh是一個解決方案,即使在行動裝置上也能即時估計468個3D臉部地標。它使用機器學習(ML)來推斷3D面部表面,只需要一個相機輸入,而無需專用的深度感測器。該解決方案利用輕量級模型架構以及整個管道中的GPU加速,為即時體驗提供了至關重要的即時效能。

引入

import '@mediapipe/face_mesh';
import '@tensorflow/tfjs-core';
import '@tensorflow/tfjs-backend-webgl';
import * as faceLandmarksDetection from '@tensorflow-models/face-landmarks-detection';
登入後複製

建立人臉模型

引入tensorflow訓練好的人臉特徵點偵測模型,預測486個3D 人臉特徵點,推論出人臉的近似面部幾何圖形。

  • maxFaces 預設為1。模型將檢測到的最大人臉數量。傳回的臉孔數量可以小於最大值(例如,當輸入中沒有人臉時)。強烈建議將此值設為預期的最大人臉數量,否則模型將繼續搜尋缺少的臉孔,這可能會減慢性能。
  • refineLandmarks 預設為false。如果設定為真,則細化眼睛和嘴唇周圍的地標座標,並在虹膜周圍輸出其他地標。 (這裡我可以設定false,因為我們沒有用到眼部座標)
  • #solutionPath 通往am二進位檔案和模型檔案所在位置的路徑。 (強烈建議將模型放到國內的物件儲存裡面,首次載入可以節省大量時間,大小大概10M)
async createDetector(){
    const model = faceLandmarksDetection.SupportedModels.MediaPipeFaceMesh;
    const detectorConfig = {
        maxFaces:1, //检测到的最大面部数量
        refineLandmarks:false, //可以完善眼睛和嘴唇周围的地标坐标,并在虹膜周围输出其他地标
        runtime: 'mediapipe',
        solutionPath: 'https://cdn.jsdelivr.net/npm/@mediapipe/face_mesh', //WASM二进制文件和模型文件所在的路径
    };
    this.detector = await faceLandmarksDetection.createDetector(model, detectorConfig);
}
登入後複製

抖音很火紅的圖片選擇題特效,用前端快速實現!

人臉辨識

傳回的臉孔清單包含影像中每個臉孔的偵測面。如果模型無法偵測到任何面孔,清單將是空的。 對於每個面,它包含一個偵測到的臉孔的邊界框,以及一個關鍵點陣列。 MediaPipeFaceMesh返回468個關鍵點。每個關鍵點都包含x和y,以及一個名稱。

現在,您可以使用偵測器來偵測人臉。 estimateFaces方法接受多種格式的圖像和視頻,包括:HTMLVideoElementHTMLImageElementHTMLCanvasElementTensor3D

  • flipHorizo​​ntal 可選。預設為false。當影像資料來自相機時,結果必須水平翻轉。
async renderPrediction() {
    var video = this.$refs['video'];
    var canvas = this.$refs['canvas'];
    var context = canvas.getContext('2d');
    context.clearRect(0, 0, canvas.width, canvas.height);
    const Faces = await this.detector.estimateFaces(video, {
        flipHorizontal:false, //镜像
    });
    if (Faces.length > 0) {
        this.log(`检测到人脸`);
    } else {
        this.log(`没有检测到人脸`);
    }
}
登入後複製

抖音很火紅的圖片選擇題特效,用前端快速實現!

該框表示圖像像素空間中臉部的邊界框,xMin、xMax表示x-bounds、yMin、yMax表示y-bounds,寬度、高度表示邊界框的尺寸。 對於關鍵點,x和y表示影像像素空間中的實際關鍵點位置。 z表示頭部中心為原點的深度,數值越小,鍵點離相機越近。 Z的大小使用與x大致相同的比例。 這個名字為一些關鍵點提供了一個標籤,例如“嘴唇”、“左眼”等。請注意,並非每個關鍵點都有標籤。

如何判斷

找到人臉上的兩個兩點

第一個點額頭中心位置第二點下巴中心位置

const place1 = (face.keypoints || []).find((e,i)=>i===10); //额头位置
const place2 = (face.keypoints || []).find((e,i)=>i===152); //下巴位置
/*
              x1,y1
                |
                |
                |
  x2,y2  -------|------- x4,y4
              x3,y3
 */
 const [x1,y1,x2,y2,x3,y3,x4,y4] = [
      place1.x,place1.y,
      0,place2.y,
      place2.x,place2.y,
      this.canvas.width, place2.y
 ];
登入後複製

透過canvas.width 額頭中心位置下巴中心位置計算x1,y1,x2,y2,x3 ,y3,x4,y4

抖音很火紅的圖片選擇題特效,用前端快速實現!

#
getAngle({ x: x1, y: y1 }, { x: x2, y: y2 }){
    const dot = x1 * x2 + y1 * y2
    const det = x1 * y2 - y1 * x2
    const angle = Math.atan2(det, dot) / Math.PI * 180
    return Math.round(angle + 360) % 360
}
const angle = this.getAngle({
        x: x1 - x3,
        y: y1 - y3,
    }, {
        x: x2 - x3,
        y: y2 - y3,
    });
console.log('角度',angle)
登入後複製

抖音很火紅的圖片選擇題特效,用前端快速實現!

通过获取角度,通过角度的大小来判断左右摆头。

推荐:《web前端开发视频教程

以上是抖音很火紅的圖片選擇題特效,用前端快速實現!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

外國女子表情包大全 外國女子表情包大全 Jul 15, 2024 pm 05:48 PM

外國女人表情包有哪些?近期有個外國女人的表情包在網路上非常火,相信很多小夥伴在刷影片時都會遇見,下面小編就來給大家分享幾個對應的表情包,感興趣的快來看看吧。外國女子表情包大全

位元組跳動剪映推出 SVIP 超級會員:連續包年 499 元,提供多種 AI 功能 位元組跳動剪映推出 SVIP 超級會員:連續包年 499 元,提供多種 AI 功能 Jun 28, 2024 am 03:51 AM

本站6月27日訊息,剪映是由位元組跳動旗下臉萌科技開發的一款影片剪輯軟體,依託於抖音平台且基本面向該平台用戶製作短影片內容,並相容於iOS、安卓、Windows 、MacOS等作業系統。剪映官方宣布會員體系升級,推出全新SVIP,包含多種AI黑科技,例如智慧翻譯、智慧劃重點、智慧包裝、數位人合成等。價格方面,剪映SVIP月費79元,年費599元(本站註:折合每月49.9元),連續包月則為59元每月,連續包年為499元每年(折合每月41.6元) 。此外,剪映官方也表示,為提升用戶體驗,向已訂閱了原版VIP

已老實求放過梗介紹 已老實求放過梗介紹 Jul 17, 2024 am 05:44 AM

已老實求放過梗是什麼意思? 「已老實求放過」作為一個網絡流行語,源自於一系列關於商品價格上調引發的幽默討論,這一表達現多用於自嘲或調侃情境中,意指個體面對特定情形(如壓力、調侃或玩笑)時,感覺自己無力反抗或辯駁,下面就跟著小編一起來看看這個梗的介紹吧。已老實求放過梗介紹來源:已老實求放過這個梗起源於“給你加個準時寶就老實了”,後來演變為“利群漲兩塊就老實了”和“冰紅茶漲一塊就老實了」。網友大呼“已老實求降價”,最後發展為“已老實求放過”且有表情包誕生。用處:用於在破防的時候或無可奈何,甚至是自我

小弟膜拜膜拜你表情包大全 小弟膜拜膜拜你表情包大全 Jul 15, 2024 am 11:25 AM

小弟膜拜膜拜你表情包有哪些?小弟膜拜膜拜你表情包源於網絡博主何丟丟不走丟創作的“大哥與小弟系列”,在該系列中,小弟面對難題時大哥及時相助,隨後小弟便會用這句台詞表達極度崇拜和感激之情,形成了風趣又不失恭敬的網梗,下面就跟著小編一起來欣賞一下表情包吧。小弟膜拜膜拜你表情包大全

紅溫梗意義介紹 紅溫梗意義介紹 Jul 12, 2024 pm 03:39 PM

紅溫是什麼梗?紅溫梗源自電競圈,特別指前《英雄聯盟》職業選手Uzi在比賽緊張或激動時臉部變紅的現象,成為網路上描述人因激動,焦慮而滿臉通紅的趣味表達,下面就跟著小編一起來看看這個梗的具體介紹吧。紅溫梗意義介紹「紅溫」作為一個網絡梗,源自於電競領域的直播文化,特別是與《英雄聯盟》(LeagueofLegends)相關的社區。這個梗初始是用來描述前職業選手Uzi(簡自豪)在比賽中的一個特徵現象。 Uzi在比賽時,因為緊張、專注或情緒激動,臉部會變得異常紅潤,這一狀態被觀眾戲謔地比喻為遊戲內英雄“蘭博

寢室哪有冷氣是什麼梗 寢室哪有冷氣是什麼梗 Jul 11, 2024 pm 07:36 PM

寢室哪有冷氣是什麼梗? 「寢室哪有空調」這個網梗,源自學生群體對宿舍缺乏空調這一生活現狀的詼諧吐槽,透過誇張與自嘲的方式,表達了在炎炎夏日里對涼爽舒適環境的渴望與現實條件的反差,下面就跟著小編一起來看看這個梗的介紹吧。寢室哪有空調是什麼梗來源:「寢室哪有空調」這個梗來自於校園生活的一種調侃,特別是針對那些住宿條件較為基礎、未配備空調的學校寢室環境。它反映出學生對於改善住宿條件,特別是在炎炎夏天對空調需求的渴望。這個梗在網路上流傳,常用於學生之間的交流,用來幽默地表達對炎熱天氣下沒有空調的無奈和

因為他善梗介紹 因為他善梗介紹 Jul 16, 2024 pm 08:59 PM

因為他善梗是什麼意思?相信有不少的小夥伴都有看到有很多短視頻評論區裡有這麼一句評論吧,那這因為他善是什麼意思呢,那今天小編就為大家帶來了因為他善梗介紹,還不清楚的小夥伴快來一起看看吧。因為他善梗介紹來源:「因為他善」這個梗源自網絡,特別是短視頻平台如抖音上的一個熱梗,與知名相聲演員郭德綱的一個段子有關。在這個段子裡,郭德綱以幽默的方式列舉了幾種不做某事的理由,每一條理由的結尾都是“因為他善”,形成了一個詼諧的邏輯閉環,實際上並沒有直接的因果關係,而是無厘頭的搞笑表達。熱梗:例如,「會做的我不

對齊一下顆粒度梗介紹 對齊一下顆粒度梗介紹 Jul 16, 2024 pm 12:36 PM

對齊一下顆粒度梗是什麼意思? 「對齊一下顆粒度」它最初出現在電影《年會不能停!》中,由演員大鵬在一次採訪中提出,那麼下面就一起來看看具體發生了什麼,希望能給大家帶來幫助。對齊一下顆粒度梗介紹【對齊一下顆粒度】這個詞組並不是標準英語或專業術語,而是特定情境下的一種職場黑話。職場黑話的意思是兩方資訊同步一下,形成共同認知。電影中指的是要讓所有細節讓雙方都知道。

See all articles