臉部美學分析
WARNING 重要提示
雖然無論是發送到 Vitals™ 雲端服務還是從 Vitals™ 雲端服務接收,Vitals™ 健康測評(VHA)的常規流程不會儲存、傳輸或接收任何個人識別資訊 (PII),但需要注意的是,啟用臉部美顏分析功能需要將使用者的臉部影像傳送到伺服器進行臉部分析。 預設情況下,此功能處於停用狀態。
Vitals™ SDK 可以分析人的臉部和皮膚特徵,並提供皮膚質量指標供用戶參考。分析結果涵蓋各種屬性,例如眼形、唇形、痤瘡、黑眼圈等。有關支援的臉部美學指標的完整列表,請參閱 解讀結果 頁面。
目標 SDK
TIP 提示
您可以參考 範例程式碼 和 API 參考 以了解更多詳細資訊。最相關的 API包括:createVitalSignCamera()、VitalSignCameraCreationProps、VideoFrameProcessedEvent和 BeautyAnalysis。
若要執行臉部美學分析,首先在建立 Vital Sign Camera 元件時,在 createVitalSignCamera() 中將 enableBeautyAnalysis 參數設為 true:
window.onload = () => {
/* 建立並初始化 Vital Sign Camera */
const video = document.querySelector("video")!;
const cam = createVitalSignCamera({
isActive: true,
config,
enableBeautyAnalysis: true // 啟用臉部美學分析
});
cam.bind(video);
}window.onload = () => {
/* 建立並初始化 Vital Sign Camera */
const video = document.querySelector("video");
const cam = createVitalSignCamera({
isActive: true,
config,
enableBeautyAnalysis: true // 啟用臉部美學分析
});
cam.bind(video);
}Vital Sign Camera 元件透過 onVideoFrameProcessed 回呼函數在 event.healthResult?.health?.beautyAnalysis 屬性中傳回臉部美學分析結果。 「臉部皮膚年齡」指標是一個例外,它可以透過 event.healthResult?.health?.vitalSign?.facialSkinAge 變數取得。在下面的範例程式碼中,它會檢查臉部美學分析結果是否已準備就緒,並在準備就緒後將其顯示在控制台中。
function printFacialBeautyAnalysisResult(event : VideoFrameProcessedEvent) {
const facialSkinAge = event.healthResult?.health?.vitalSigns?.facialSkinAge;
const beautyResults = event.healthResult?.health?.beautyAnalysis;
if (beautyResults) {
console.log(`************* 皮膚質量 *************`)
console.log(`皮膚質量 = ${beautyResults.skinQualityScore.toFixed(2)}`)
console.log(`************* 皮膚特征 *************`)
console.log(`臉部皮膚年齡 = ${facialSkinAge} 年`)
console.log(`皮膚水分 = ${beautyResults.skinMoisture}`)
console.log(`痤瘡 = ${beautyResults.acne}`)
console.log(`色素沉著 = ${beautyResults.pigmentation}`)
console.log(`黑眼圈 = ${beautyResults.darkCircle}`)
console.log(`皺紋 = ${beautyResults.wrinkles}`)
console.log(`臉部泛紅 = ${beautyResults.redness}`)
console.log(`************* 臉部特征 *************`)
console.log(`臉型 = ${beautyResults.faceShape}`)
console.log(`唇型 = ${beautyResults.lipsShape}`)
console.log(`眼袋 = ${beautyResults.eyeBags}`)
console.log(`眼型 = ${beautyResults.eyeShape}`)
}
}function printFacialBeautyAnalysisResult(event) {
const facialSkinAge = event.healthResult?.health?.vitalSigns?.facialSkinAge;
const beautyResults = event.healthResult?.health?.beautyAnalysis;
if (beautyResults) {
console.log(`************* 皮膚質量 *************`)
console.log(`皮膚質量 = ${beautyResults.skinQualityScore.toFixed(2)}`)
console.log(`************* 皮膚特征 *************`)
console.log(`臉部皮膚年齡 = ${facialSkinAge} 年`)
console.log(`皮膚水分 = ${beautyResults.skinMoisture}`)
console.log(`痤瘡 = ${beautyResults.acne}`)
console.log(`色素沉著 = ${beautyResults.pigmentation}`)
console.log(`黑眼圈 = ${beautyResults.darkCircle}`)
console.log(`皺紋 = ${beautyResults.wrinkles}`)
console.log(`臉部泛紅 = ${beautyResults.redness}`)
console.log(`************* 臉部特征 *************`)
console.log(`臉型 = ${beautyResults.faceShape}`)
console.log(`唇型 = ${beautyResults.lipsShape}`)
console.log(`眼袋 = ${beautyResults.eyeBags}`)
console.log(`眼型 = ${beautyResults.eyeShape}`)
}
}在 onVideoFrameProcessed 回呼中呼叫此函數:
/* 更新 onload 事件處理函數 */
window.onload = () => {
// ...
/* 更新 onVideoFrameProcessed 回呼函數 */
cam.onVideoFrameProcessed = (event : VideoFrameProcessedEvent) => {
// ...
/* 如果臉部美學分析結果已準備就緒,則列印結果 */
printFacialBeautyAnalysisResult(event);
}
}/* 更新 onload 事件處理函數 */
window.onload = () => {
// ...
/* 更新 onVideoFrameProcessed 回呼函數 */
cam.onVideoFrameProcessed = (event) => {
// ...
/* 如果臉部美學分析結果已準備就緒,則列印結果 */
printFacialBeautyAnalysisResult(event);
}
}