自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

輕松構(gòu)建表情符號(hào)制作應(yīng)用程序

開發(fā) 前端
構(gòu)建自定義表情符號(hào)制作應(yīng)用程序,捕捉用戶的面部表情并使對(duì)話更有趣。

?表情符號(hào)是當(dāng)今在線交流中必不可少的工具,因?yàn)樗鼈冇兄跒榛谖谋镜牧奶煸鎏砩?,并允許用戶更好地表達(dá)文字背后的情感。由于預(yù)設(shè)表情符號(hào)的數(shù)量總是有限的,許多應(yīng)用程序現(xiàn)在允許用戶創(chuàng)建自己的自定義表情符號(hào),以保持新鮮和令人興奮。

例如,在社交媒體應(yīng)用中,不想在視頻通話時(shí)露臉的用戶可以使用動(dòng)畫角色來保護(hù)自己的隱私,并將面部表情應(yīng)用于角色;在直播或電子商務(wù)應(yīng)用程序中,具有逼真面部表情的虛擬主播更有可能吸引觀眾;在視頻或照片拍攝應(yīng)用程序中,用戶可以在自拍時(shí)控制動(dòng)畫角色的面部表情,然后通過社交媒體分享自拍;在兒童教育應(yīng)用程序中,一個(gè)帶有詳細(xì)面部表情的可愛動(dòng)畫角色將使在線課程變得更加有趣和吸引學(xué)生。

我自己正在開發(fā)這樣一個(gè)消息傳遞應(yīng)用程序。當(dāng)與朋友聊天并想以文字以外的方式表達(dá)自己時(shí),我的應(yīng)用程序的用戶可以拍照以創(chuàng)建他們自己或他們選擇的動(dòng)畫角色的表情符號(hào)。然后,該應(yīng)用程序?qū)⒆R(shí)別用戶的面部表情,并將他們的面部表情應(yīng)用于表情符號(hào)。通過這種方式,用戶可以創(chuàng)建無窮無盡的獨(dú)特表情符號(hào)。在我的APP開發(fā)過程中,我利用HMS Core AR Engine提供的能力來跟蹤用戶的面部表情并將面部表情轉(zhuǎn)換為參數(shù),大大減少了開發(fā)工作量。現(xiàn)在我將向您展示我是如何做到這一點(diǎn)的。

執(zhí)行

AR Engine 為應(yīng)用程序提供了實(shí)時(shí)跟蹤和識(shí)別面部表情的能力,然后可以將其轉(zhuǎn)換為面部表情參數(shù),用于精確控制虛擬角色的面部表情。

目前,該套件提供了 64 種面部表情,包括眼瞼、眉毛、眼球、嘴巴和舌頭的動(dòng)作。支持眼球運(yùn)動(dòng)、開閉眼等21種眼部動(dòng)作;28 種嘴部動(dòng)作,包括張開嘴巴、皺起、拉動(dòng)或舔嘴唇,以及移動(dòng)舌頭;以及五個(gè)眉毛動(dòng)作,包括抬眉或下眉。

  • 演示
  • 基于面部表情的表情符號(hào)
  • 開發(fā)流程
  • 對(duì)開發(fā)環(huán)境的要求
  • JDK:1.8.211 或更高版本
  • Android Studio:3.0 或更高版本
  • minSdkVersion:26 或更高版本
  • targetSdkVersion:29(推薦)
  • compileSdkVersion:29(推薦)
  • Gradle 版本:6.1.1 或更高版本(推薦)

確保您已從 AppGallery 下載 AR Engine APK 并將其安裝在設(shè)備上。

如果您需要使用多個(gè) HMS Core 套件,請(qǐng)使用這些套件所需的最新版本。

準(zhǔn)備工作

1. 開始之前,您需要注冊(cè)成為華為開發(fā)者并完成身份驗(yàn)證。

2. 在開發(fā)之前,通過 Maven 倉庫將 AR Engine SDK 集成到您的開發(fā)環(huán)境中。

3. 7.0之前的Gradle插件、7.0版本的Gradle插件、7.1及以上版本的Gradle插件,在Android Studio中配置Maven倉庫地址的步驟各不相同。需要根據(jù)具體的 Gradle 插件版本進(jìn)行配置。

4、以Gradle插件7.0為例:

在您的 Android Studio 項(xiàng)目中打開項(xiàng)目級(jí)build.gradle文件并配置 Maven 存儲(chǔ)庫地址。

轉(zhuǎn)到buildscript > repositories并為 SDK 配置 Maven 存儲(chǔ)庫地址。

buildscript {
repositories {
google()
jcenter()
maven {url "https://developer.huawei.com/repo/" }
}
}

打開項(xiàng)目級(jí)settings.gradle文件,配置HMS Core SDK的Maven倉庫地址。

buildscript {
repositories {
google()
jcenter()
maven {url "https://developer.huawei.com/repo/" }
}
}

5. 在依賴項(xiàng)塊中添加以下構(gòu)建依賴項(xiàng)。

dependencies {
implementation 'com.huawei.hms:arenginesdk:{version}
}

應(yīng)用程序開發(fā)

1. 檢查當(dāng)前設(shè)備是否安裝了AR Engine。如果是,您的應(yīng)用程序可以正常運(yùn)行。如果沒有,您需要提示用戶安裝它,例如,通過將用戶重定向到 AppGallery。示例代碼如下:

boolean isInstallArEngineApk =AREnginesApk.isAREngineApkReady(this);
if (!isInstallArEngineApk) {
//ConnectAppMarketActivity.class is the activity for redirecting users to AppGallery.
startActivity(new Intent(this,com.huawei.arengine.demos.common.ConnectAppMarketActivity.class));
isRemindInstall = true;
}

2. 創(chuàng)建一個(gè) AR 場(chǎng)景。AR Engine支持五種場(chǎng)景,包括運(yùn)動(dòng)追蹤(ARWorldTrackingConfig)、人臉追蹤(ARFaceTrackingConfig)、手部識(shí)別(ARHandTrackingConfig)、人體追蹤(ARBodyTrackingConfig)和圖像識(shí)別(ARImageTrackingConfig)。

下面以調(diào)用ARFaceTrackingConfig創(chuàng)建人臉跟蹤場(chǎng)景為例。

// Create an ARSession object.
mArSession = new ARSession(this);
// Select a specific Config to initialize the ARSession object based on the application scenario.
ARFaceTrackingConfig config = new ARFaceTrackingConfig(mArSession);

使用config.set XXX方法設(shè)置場(chǎng)景參數(shù)。

// Set the camera opening mode, which can be external or internal. The external mode can only be used in ARFace. Therefore, you are advised to use the internal mode.
mArConfig.setImageInputMode(ARConfigBase.ImageInputMode.EXTERNAL_INPUT_ALL);

3.設(shè)置人臉跟蹤的AR場(chǎng)景參數(shù),啟動(dòng)人臉跟蹤。

mArSession.configure(mArConfig);
mArSession.resume();

4、初始化FaceGeometryDisplay類,獲取人臉幾何數(shù)據(jù),并將數(shù)據(jù)渲染到屏幕上。

public class FaceGeometryDisplay {
// Initialize the OpenGL ES rendering related to face geometry, including creating the shader program.
void init(Context context) {...
}
}

5、初始化FaceGeometryDisplay類中的onDrawFrame方法,調(diào)用face.getFaceGeometry()獲取人臉網(wǎng)格。

public void onDrawFrame(ARCamera camera, ARFace face) {
ARFaceGeometry faceGeometry = face.getFaceGeometry();
updateFaceGeometryData(faceGeometry);
updateModelViewProjectionData(camera, face);
drawFaceGeometry();
faceGeometry.release();
}

6.在FaceGeometryDisplay類中初始化updateFaceGeometryData() 。

傳遞面部網(wǎng)格數(shù)據(jù)以進(jìn)行配置并使用 OpenGL ES 設(shè)置面部表情參數(shù)。

private void updateFaceGeometryData (ARFaceGeometry faceGeometry) {
FloatBuffer faceVertices = faceGeometry.getVertices();
FloatBuffer textureCoordinates =faceGeometry.getTextureCoordinates();
// Obtain an array consisting of face mesh texture coordinates, which is used together with the vertex data returned by getVertices() during rendering.
}

7. 初始化FaceRenderManager類來管理人臉數(shù)據(jù)渲染。

public class FaceRenderManager implements GLSurfaceView.Renderer {
public FaceRenderManager(Context context, Activity activity) {
mContext = context;
mActivity = activity;
}
// Set ARSession to obtain the latest data.
public void setArSession(ARSession arSession) {
if (arSession == null) {
LogUtil.error(TAG, "Set session error, arSession is null!");
return;
}
mArSession = arSession;
}
// Set ARConfigBase to obtain the configuration mode.
public void setArConfigBase(ARConfigBase arConfig) {
if (arConfig == null) {
LogUtil.error(TAG, "setArFaceTrackingConfig error, arConfig is null.");
return;
}
mArConfigBase = arConfig;
}
// Set the camera opening mode.
public void setOpenCameraOutsideFlag(boolean isOpenCameraOutsideFlag) {
isOpenCameraOutside = isOpenCameraOutsideFlag;
}
...
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
mFaceGeometryDisplay.init(mContext);
}
}

8、在FaceActivity中調(diào)用FaceRenderManager的setArSession、setArConfigBase等方法實(shí)現(xiàn)人臉跟蹤效果。

public class FaceActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
mFaceRenderManager = new FaceRenderManager(this, this);
mFaceRenderManager.setDisplayRotationManage(mDisplayRotationManager);
mFaceRenderManager.setTextView(mTextView);
glSurfaceView.setRenderer(mFaceRenderManager);
glSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);
}
}

結(jié)論

表情符號(hào)允許用戶以文字無法表達(dá)的方式表達(dá)他們的情緒和興奮。您現(xiàn)在可以通過允許用戶自己創(chuàng)建表情符號(hào)來讓您的應(yīng)用程序變得更有趣,而不是為用戶提供已使用一百萬次的相同舊的無聊預(yù)設(shè)表情符號(hào)!用戶只需面對(duì)鏡頭,選擇他們喜歡的動(dòng)畫角色并微笑,就可以輕松創(chuàng)建帶有自己微笑的表情符號(hào)。有了這種自定義表情符號(hào)的能力,用戶將能夠以更加個(gè)性化和有趣的方式表達(dá)自己的感受。

如果您有興趣開發(fā)這樣的應(yīng)用程序,AR 引擎是一個(gè)潛在的選擇。它能夠?qū)崟r(shí)識(shí)別用戶的面部表情,將面部表情轉(zhuǎn)換為參數(shù),然后應(yīng)用到虛擬角色中。集成該功能可以幫助您顯著簡(jiǎn)化應(yīng)用程序開發(fā)過程,讓您有更多時(shí)間專注于如何為用戶提供更有趣的功能并改善應(yīng)用程序的用戶體驗(yàn)。?

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2024-06-18 11:48:23

2021-05-08 19:16:38

Python開發(fā)Emoji

2021-03-03 11:20:59

微信表情符號(hào)騰訊

2023-09-01 08:27:51

Windows 11微軟

2021-07-19 10:51:29

谷歌AndroidChrome OS

2017-12-10 14:13:14

云服務(wù)云原生應(yīng)用程序

2010-02-04 10:17:38

Android應(yīng)用程序

2011-09-01 10:01:35

PhoneGap應(yīng)用程序GoodDay

2009-12-15 10:19:05

Linux應(yīng)用程序

2017-03-02 11:10:39

AndroidMVVM應(yīng)用程序

2024-01-03 11:44:26

開發(fā)云服務(wù)

2020-11-16 09:38:08

編程語言EmojiEmojicode

2022-01-18 06:29:45

Windows 11操作系統(tǒng)微軟

2025-02-06 10:42:20

2021-11-14 07:33:07

谷歌Chrome 瀏覽器

2010-06-13 09:22:37

jQuery

2012-04-19 09:34:21

ibmdw

2019-05-27 13:50:35

多云架構(gòu)企業(yè)多云集成云計(jì)算

2022-02-15 10:50:57

Opera瀏覽器表情符號(hào)

2012-05-24 15:49:35

HTML5
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)