面部美学分析
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);
}
}