視頻實時自然美顏, 無懼素顏上鏡

来源:https://www.cnblogs.com/hmscore/archive/2023/01/10/17039405.html
-Advertisement-
Play Games

華為HMS Core 視頻編輯服務依托自身AI技術的核心優勢,在最新版本HMS Core 6.8.0中上線了全新的視頻美顏功能,能對指定圖片或視頻中的人臉實現磨皮、美白、大眼、瘦臉的美顏效果,適用於直播、相機、視頻剪輯、圖片處理等場景中,打造獨特自然的美顏效果。 HMS Core視頻美顏功能在技術上 ...


華為HMS Core 視頻編輯服務依托自身AI技術的核心優勢,在最新版本HMS Core 6.8.0中上線了全新的視頻美顏功能,能對指定圖片或視頻中的人臉實現磨皮、美白、大眼、瘦臉的美顏效果,適用於直播、相機、視頻剪輯、圖片處理等場景中,打造獨特自然的美顏效果。

HMS Core視頻美顏功能在技術上使用CPU+NPU+GPU異構並行框架,支持實時美顏處理,演算法跑得更快但系統功耗降低,50fps+端到端高效處理,能在10ms內完成視頻中最多2個人臉(面積占比較大的2個人)的處理(數據源於華為內部測試)。使用855點稠密五官定位,精準識別人臉,避免人臉移動過快或角度過大時,美顏效果變形。針對美顏效果,採用面部精細分區,結合中性灰自然磨皮,更加自然真實。

另外,為滿足用戶的更多個性化需求,華為開放磨皮、美白、大眼、瘦臉美顏效果的多級調節功能,用戶可根據需求自行調節效果,助力開發者以較低成本開發優秀的視頻美顏效果。

美顏效果

下麵我們就一起來實操一下如何接入華為視頻編輯服務,實現視頻美顏功能。

開發步驟

1. 開發準備

詳細準備步驟可參考華為開發者聯盟官網

2. 集成準備

設置應用的鑒權信息。可以通過api_key或者Access Token來設置應用鑒權信息。

(推薦)通過setAccessToken方法設置Access Token,在應用啟動時初始化設置一次即可,無需多次設置。

HVEAIApplication.getInstance().setAccessToken("your access token");

獲取Access Token可參見基於OAuth 2.0開放鑒權客戶端模式。

通過setApiKey方法設置api_key,在應用啟動時初始化設置一次即可,無需多次設置。

HVEAIApplication.getInstance().setApiKey("your ApiKey");

當您在AppGallery Connect上註冊您的應用時,會給您的應用分配api_key,可參見添加當前應用的AppGallery Connect配置文件

註意:請勿將api_key硬編碼在代碼中,同時不要將api_key存儲在應用的配置文件中。建議您將api_key存儲在雲側,運行時獲取。

3. 美顏功能集成

// 創建美顏演算法類實例
HVEAIBeauty hveaiBeauty = new HVEAIBeauty();
 
// 初始化美顏AI演算法引擎
hveaiBeauty.initEngine(new HVEAIInitialCallback() {
    @Override
    public void onProgress(int progress) {
        // 初始化美顏AI演算法引擎進度
    }
    @Override
    public void onSuccess() {
        // 初始化美顏AI演算法引擎成功
    }
    @Override
    public void onError(int errorCode, String errorMessage) {
        // 初始化美顏AI演算法引擎失敗
    }
});
 
// 初始化美顏演算法opengl運行環境,需在opengl渲染線程里調用
hveaiBeauty.prepare();
 
// 設置需美顏處理的紋理的寬高(textureWidth:紋理的寬;textureHeight:紋理的高),初始化或紋理有變化後調用,需在opengl渲染線程里調用
// resize參數為需要處理的紋理寬高,取值需要大於0
hveaiBeauty.resize(textureWidth, textureHeight);
 
// 美顏參數配置,磨皮,美白,瘦臉,大眼,亮眼, 美顏程度範圍:[0, 1]
HVEAIBeautyOptions options = new HVEAIBeautyOptions.Builder().setBigEye(1)
    .setBlurDegree(1)
    .setBrightEye(1)
    .setThinFace(1)
    .setWhiteDegree(1)
    .build();
 
// 更新美顏參數,初始化或有修改後更新
hveaiBeauty.updateOptions(options);
 
// 進行美顏處理,在opengl渲染線程里每幀調用,(inputTextureId:輸入的紋理ID;outputTextureId:輸出的紋理ID)
// 請確保輸入正向朝上的人臉的紋理。
int outputTextureId = hveaiBeauty.process(inputTextureId);
 
// 釋放美顏AI演算法引擎
hveaiBeauty.releaseEngine();

HMS Core視頻編輯服務除了支持視頻美顏,還提供基礎視頻編輯、專屬濾鏡、一鍵染髮、人物追蹤、AI著色、動態照片、精彩片段、一鍵動效、人臉遮擋、一鍵微笑、目標分割等視頻創作能力,開發者可依據應用場景,在App中輕鬆完成視頻功能的集成。

瞭解更多詳情>>

訪問華為開發者聯盟官網
獲取開髮指導文檔
華為移動服務開源倉庫地址:GitHubGitee

關註我們,第一時間瞭解 HMS Core 最新技術資訊~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 病情描述 打開Ubuntu準備工作,結果黑屏,等了一會(幾分鐘),通過ssh連上,使用df -h查看磁碟占用,發現/var目錄空間被占滿了,上圖: 病情分析 先top查看資源占用,如下圖所示: 這不,病竈找到了,cupsd乾的好事,cpu直接拉滿!問題來了,cupsd是個什麼玩意?百度百科描述如下: ...
  • 大家好,我是哪吒。 三分鐘你將學會: MongoDB連接池的使用方式與常用參數 查詢五步走,能活九十九? MongoDB索引與MySQL索引有何異同? MongoDB事務與ACID 什麼是聚合框架? 在最開始接觸MongoDB的時候,是通過 MongoDatabase database = new ...
  • Mybatis IDEA創建一個空項目,然後添加Maven模塊 maven項目路徑如下所示 --項目名 --/src --/main #存放主程式java代碼和資源 --/java #java代碼 --/resources #配置文件和資源等,放到這裡的文件等同於放到了根目錄下 --/test #測 ...
  • 測試的覆蓋通常是指需求範圍的執行程度,如需求、測試用例、缺陷的正向與逆向的雙向追溯。便於對其相關屬性的度量,即使用了覆蓋率。 ...
  • 定義: 相同文檔結構(Mapping)文檔的結合 由唯一索引名稱標定 一個集群中有多個索引 不同的索引代表不同的業務類型數據 註意事項: 索引名稱不支持大寫 索引名稱最大支持255個字元長度 欄位的名稱,支持大寫,不過建議全部統一小寫 ...
  • 檢索數據 SELECT語句 SELECT語句用途是從一個或多個表中檢索信息。為了使用SELECT檢索表數據,必須至少給出兩條信息——想選擇什麼,以及從什麼地方選擇。 檢索單個列 利用SELECT語句從products表中檢索一個名為prod_name的列: SELECT prod_name FROM ...
  • 摘要:增量備份是重要的常規備份策略,正確快速識別增量變化文件的相關信息對增量備份至關重要。 本文分享自華為雲社區《其疾如風,GaussDB(DWS)增量備份核心設計》,作者: 我的橘子呢 。 1、認識增量備份 GaussDB(DWS)數倉的備份恢復工具Roach支持集群級增量備份。全量備份會將源數據 ...
  • GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 作者: 楊延昭 文章來源:GreatSQL社區投稿 在資料庫中,除傳統的計算資源(CPU、RAM、IO)的爭用以外,數據也是一種供許多用戶共用的資源。如 ...
一周排行
    -Advertisement-
    Play Games
  • 一:背景 1. 講故事 年前遇到了好幾例托管堆被損壞的案例,有些運氣好一些,從被破壞的托管堆記憶體現場能觀測出大概是什麼問題,但更多的情況下是無法做出準確判斷的,原因就在於生成的dump是第二現場,借用之前文章的一張圖,大家可以理解一下。 為了幫助更多受此問題困擾的朋友,這篇來整理一下如何 快狠準 的 ...
  • 前言 .NET6 開始,.NET Croe API 項目取消了 Startup.cs 文件,在 Program.cs 文件的 Main 函數中完成服務的註冊和中間件管道的管理。但當我們項目引入更多包的時候,Program.cs 文件也會看起來很臃腫。 而且,我們不只會有一個後端項目,為了方便快速創建 ...
  • 目錄 背景 get 與 post 的區別 所有介面都用 post 請求? 背景 最近在逛知乎的時候發現一個有趣的問題:公司規定所有介面都用 post 請求,這是為什麼? 看到這個問題的時候其實我也挺有感觸的,因為我也曾經這樣問過我自己。在上上一家公司的時候接到一個項目是從零開始搭建一個微服務,當時就 ...
  • *以下內容為本人的學習筆記,如需要轉載,請聲明原文鏈接 微信公眾號「englyf」https://mp.weixin.qq.com/s/2GFLTstDC7w6u3fTJxflNA 本文大概 1685 個字,閱讀需花 6 分鐘內容不多, 但也花了一些精力如要交流, 歡迎關註我然後評論區留言 謝謝你的 ...
  • 在新版本的pandas中,上述代碼會引起警告,建議改成SQLAlchemy connectable(engine/connection),後續代碼將引入這種升級的連接方式。 ...
  • 幾乎所有的高級編程語言都有自己的垃圾回收機制,開發者不需要關註記憶體的申請與釋放,Python 也不例外。Python 官方團隊的文章 https://devguide.python.org/internals/garbage-collector 詳細介紹了 Python 中的垃圾回收演算法,本文是這篇 ...
  • 如果您想查找高於或低於平均值的數字,可以不必計算該平均值,就能查看更高或更低的值。通過Java應用程式,可以自動突出顯示這些數字。除了快速突出顯示高於或低於平均值的值外,您還可以查看高於或低於的值的個數。現在讓我們看看如何在 Java應用程式中實現此操作。 引入jar包 導入方法1: 手動引入。將  ...
  • 第一種方式:使用{} firstDict = {"name": "wang yuan wai ", "age" : 25} 說明:{}為創建一個空的字典對象 第二種方式:使用fromkeys()方法 second_dict = dict.fromkeys(("name", "age")) #valu ...
  • 在golang中可以使用a := b這種方式將b賦值給a,只有當b能進行深拷貝時a與b才不會互相影響,否則就需要進行更為複雜的深拷貝。 下麵就是Go賦值操作的一個說明: Go語言中所有賦值操作都是值傳遞,如果結構中不含指針,則直接賦值就是深度拷貝;如果結構中含有指針(包括自定義指針,以及切片,map ...
  • 本文結合京東監控埋點場景,對解決樣板代碼的技術選型方案進行分析,給出最終解決方案後,結合理論和實踐進一步展開。通過關註文中的技術分析過程和技術場景,讀者可收穫一種樣板代碼思想過程和解決思路,並對Java編譯器底層有初步瞭解。 ...