电容 ML Kit 面部检测插件
非官方电容插件 ML Kit 面部检测[^1]
使用大小写
通常在应用程序需要定位图像中面相时使用面相检测插件,例如:
- 图片组织: 检测哪些相片包含面相并位于何处, 例如可以剪切周围的缩略图 .
- 自我效应:使用被检测到的面部地标和轮廓来将贴纸或其他虚拟元素放在面上.
- 微笑检测:利用分类结果确定一个人微笑或睁开眼睛的概率.
- 脸部跟踪: 使用跟踪选项对相接相框的每个面相保持一致的ID.
兼容性
| 插件版本 | 电容版本 | 状态 |
|---|---|---|
| 8.x.x (英语) | >=8.x.x | 积极支持 |
| 7.x.x (中文(简体) ) | 7.x.x (中文(简体) ) | 折旧 |
| 6.x.x (中文(简体) ) | 6.x.x (中文(简体) ) | 折旧 |
安装
你可以用我们的 AI 辅助设置 以安装插件. 添加数据 超级技能 至您的 AI 工具,使用以下命令:
npx skills add capawesome-team/skills --skill capacitor-plugins
然后使用下列提示:
Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capacitor-mlkit/face-detection` plugin in my project.
如果你喜欢 手动设置,通过运行以下命令来安装插件,并遵循下面的平台特定指令:
npm install @capacitor-mlkit/face-detection
npx cap sync
请注意: 此插件 只支持可口可乐Pods iOS的依赖性管理。 Swift 软件包管理器( SPM) 不支持 ML Kit SDK, 参见 本评论。 。 。 .
机器人
依赖关系
您需要添加以下元数据 内 页:1 application 在您的标签 AndroidManifest.xml数字 :
<meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="face"/>
<!-- To use multiple models: android:value="face,model2,model3" -->
变量
如果需要, 您可以在您的应用程序中定义以下工程变量 variables.gradle 要更改依赖的默认版本的文件 :
$mlkitFaceDetectionVersion版本com.google.mlkit:face-detection(默认 :16.1.7(中文(简体) )$playServicesMlkitFaceDetectionVersion版本com.google.android.gms:play-services-mlkit-face-detection(默认 :17.1.0(中文(简体) )
如果您在工程中遇到其它插件的依赖性冲突, 这会有所帮助 .
iOS系统
最低部署目标
确定部署目标 ios/App/Podfile 至少改为 15.5数字 :
platform :ios, '15.5'
配置
此插件不需要配置 .
演示
这里有一个实例: robingenz/电容-mlkit-plugin-demo
使用量
以下例子说明如何在图像中检测面相.
在图像中检测面相
在局部路径上用图像检测人类相貌. 可以配置精度/速率取舍,并实现地标,轮廓,分类(微笑和眼睛打开概率),并实现面相跟踪. 仅在Android和iOS上提供:
import {
FaceDetection,
PerformanceMode,
LandmarkMode,
ContourMode,
ClassificationMode,
} from '@capacitor-mlkit/face-detection';
const processImage = async () => {
const { faces } = await FaceDetection.processImage({
path: 'path/to/image.jpg',
performanceMode: PerformanceMode.Fast,
landmarkMode: LandmarkMode.All,
contourMode: ContourMode.All,
classificationMode: ClassificationMode.All,
minFaceSize: 0.1,
enableTracking: false,
});
return faces;
};
API 密码
进程图像(...)
processImage(options: ProcessImageOptions) => Promise<ProcessImageResult>
从提供的图像中检测出人相.
仅在Android和iOS上提供.
| 参数 | 类型 |
|---|---|
options | ProcessImageOptions |
回返情况: Promise<ProcessImageResult>
自: 5.1.0 国家
接口
进程图像结果
| Prop | 类型 | 说明 | 自兹 |
|---|---|---|---|
faces | Face[] | 被检测出的脸. | 5.1.0 国家 |
脸
代表被检测到的面相 FaceDetector。 。 。 .
| Prop | 类型 | 说明 | 自兹 |
|---|---|---|---|
bounds | Rect | 返回检测到的面相的轴对齐矩形. | 5.1.0 国家 |
landmarks | FaceLandmark[] | 返回一张面部地标列表. | 5.1.0 国家 |
contours | FaceContour[] | 返回面相轮廓列表 . | 5.1.0 国家 |
trackingId | number | 如果启动跟踪, 返回跟踪ID . | 5.1.0 国家 |
headEulerAngleX | number | 返回关于图像水平轴的面相旋转。 阳性发作X是脸朝上看. | 5.1.0 国家 |
headEulerAngleY | number | 返回图像垂直轴上的面相旋转。 阳性 euler y 是当面朝正在处理的图像的右侧转去时. | 5.1.0 国家 |
headEulerAngleZ | number | 返回图像中指向轴的相向旋转。 正euler z是图像平面内逆时针旋转. | 5.1.0 国家 |
smilingProbability | number | 返回 0.0 至 1.0 之间的值,使面部有微笑的概率. | 5.1.0 国家 |
leftEyeOpenProbability | number | 返回 0.0 至 1.0 之间的值,使面部左眼有可能被打开. | 5.1.0 国家 |
rightEyeOpenProbability | number | 返回 0.0 至 1.0 之间的值,使面部右眼有可能被打开. | 5.1.0 国家 |
矩形
矩形 为矩形持有四个整数坐标.
| Prop | 类型 | 说明 | 自兹 |
|---|---|---|---|
left | number | 矩形左侧的X坐标. | 5.1.0 国家 |
top | number | 矩形顶部的Y坐标. | 5.1.0 国家 |
right | number | 矩形右侧的X坐标. | 5.1.0 国家 |
bottom | number | 矩形下方的Y坐标. | 5.1.0 国家 |
正面标记
代表一个脸部地标. 地标指被检测到的相貌上的一个点,如眼睛,鼻子,或口.
| Prop | 类型 | 说明 | 自兹 |
|---|---|---|---|
type | LandmarkType | 获得 正面标记。 。 。 .地标类型 类型. | 5.1.0 国家 |
position | Point | 获得地标位置的2D分,其中(0,0)为图像左上角. | 5.1.0 国家 |
点
点 持有两个坐标
| Prop | 类型 |
|---|---|
x | number |
y | number |
相貌轮廓
代表面相轮廓. 轮廓是检测到的面相上点的列表,如口.
| Prop | 类型 | 说明 | 自兹 |
|---|---|---|---|
type | ContourType | 获得 相貌轮廓。 。 。 .轮廓 类型. | 5.1.0 国家 |
points | Point[] | 获取此面相轮廓的 2D 点列表, 其中 (0, 0) 是图像的左上角 . | 5.1.0 国家 |
进程图像选项
| Prop | 类型 | 说明 | 默认 | 自兹 |
|---|---|---|---|---|
path | string | 图像文件的本地路径 . | 5.1.0 国家 | |
performanceMode | PerformanceMode | 定义在进行面孔检测时控制精度/速度权衡的选项. | PerformanceMode.Fast | 5.1.0 国家 |
landmarkMode | LandmarkMode | 定义是否启用面额地标的选项 . | LandmarkMode.None | 5.1.0 国家 |
contourMode | ContourMode | 定义是否启用外观轮廓的选项. | ContourMode.None | 5.1.0 国家 |
classificationMode | ClassificationMode | 定义诸如"微笑"*和"开眼"等属性的特征化选项. | ClassificationMode.None | 5.1.0 国家 |
minFaceSize | number | 设置最小的想要的面相大小,以头宽与图像宽度的比例表示. | 0.1 | 5.1.0 国家 |
enableTracking | boolean | 启用面部跟踪,在连续处理帧时,每个面部将保持一致的ID. 跟踪应被禁用,用于处理一系列非连续的静态图像. | false | 5.1.0 国家 |
数字
地标类型
| 成员 | 数值 | 说明 | 自兹 |
|---|---|---|---|
MouthBottom | 0 | 主体下唇形中央. | 5.1.0 国家 |
LeftCheek | 1 | 主体左口角与被主体左眼外角的中点. 对于完整剖面来说,这成为了鼻基,鼻尖,左耳叶和左耳尖的中间体. | 5.1.0 国家 |
LeftEar | 3 | 被试者左耳尖和左耳叶的中点. | 5.1.0 国家 |
LeftEye | 4 | 主体中心为左眼腔. | 5.1.0 国家 |
MouthLeft | 5 | 主体是唇相会的左口角. | 5.1.0 国家 |
NoseBase | 6 | 被试者鼻孔相接面部的中点. | 5.1.0 国家 |
RightCheek | 7 | 被试者右口角与被试者右眼外角的中点. 对于完整的剖面,这成为了鼻基,鼻尖,右耳叶和右耳尖的中间体. | 5.1.0 国家 |
RightEar | 9 | 受试者右耳尖和右耳叶的中点. | 5.1.0 国家 |
RightEye | 10 | 受试者右眼腔中心. | 5.1.0 国家 |
MouthRight | 11 | 主体是唇相会的右口角. | 5.1.0 国家 |
轮廓
| 成员 | 数值 | 说明 | 自兹 |
|---|---|---|---|
Face | 1 | 主体相貌的轮廓. | 5.1.0 国家 |
LeftEyebrowTop | 2 | 题材上方出自"左眉". | 5.1.0 国家 |
LeftEyebrowBottom | 3 | 主体左眉的下部轮廓. | 5.1.0 国家 |
RightEyebrowTop | 4 | 受试者右眉毛上起相轮. | 5.1.0 国家 |
RightEyebrowBottom | 5 | 主体右眉的下部轮廓. | 5.1.0 国家 |
LeftEye | 6 | 受试者左眼腔的轮廓. | 5.1.0 国家 |
RightEye | 7 | 受试者右眼腔的外观轮廓. | 5.1.0 国家 |
UpperLipTop | 8 | 受试者上唇形顶部轮廓. | 5.1.0 国家 |
UpperLipBottom | 9 | 主体上唇下方轮廓. | 5.1.0 国家 |
LowerLipTop | 10 | 受试对象下唇上方轮廓. | 5.1.0 国家 |
LowerLipBottom | 11 | 受试对象下唇下方轮廓. | 5.1.0 国家 |
NoseBridge | 12 | 学科鼻桥分解纲要. | 5.1.0 国家 |
NoseBottom | 13 | 学科鼻桥分解纲要. | 5.1.0 国家 |
LeftCheek | 14 | 左颊之中. | 5.1.0 国家 |
RightCheek | 15 | 右颊中央. | 5.1.0 国家 |
绩效模式
| 成员 | 数值 | 说明 | 自兹 |
|---|---|---|---|
Fast | 1 | 在选项中表示对速度的偏好,以作出准确性与速度取舍。 这往往会发现面相较少,在确定位置等值时可能不太精确,但运行会更快. | 5.1.0 国家 |
Accurate | 2 | 表示在选项中偏好准确性,以准确性与速度权衡。 这将倾向于检测出更多的面相,在以速度为代价确定位置等值时可能更为精确. | 5.1.0 国家 |
地标模式
| 成员 | 数值 | 说明 | 自兹 |
|---|---|---|---|
None | 1 | 不进行标志性检测. | 5.1.0 国家 |
All | 2 | 探测器 正面标记 为了一个特定的脸. | 5.1.0 国家 |
轮廓模式
| 成员 | 数值 | 说明 | 自兹 |
|---|---|---|---|
None | 1 | 不进行轮廓检测 . | 5.1.0 国家 |
All | 2 | 探测器 相貌轮廓 为了一个特定的脸。 注意它会返回轮廓 最多5个面孔 | 5.1.0 国家 |
分类模式
| 成员 | 数值 | 说明 | 自兹 |
|---|---|---|---|
None | 1 | 不进行分类. | 5.1.0 国家 |
All | 2 | 进行"眼开"和"笑"分类. | 5.1.0 国家 |
财务问题
此插件支持哪些平台 ?
这个 processImage(...) 方法只在Android和iOS上可用. 网络平台不支持基础的ML Kit Face SDK.
插件是否识别图片中是谁 ?
不,插件执行面部检测,而不是面部识别. 它在图像中检测出面相的位置以及地标,轮廓,头旋转等属性,并笑出概率,但并不识别个体. 与 enableTracking 选项中,您只能在连续的相框中为同一面相保持一致的ID.
地标和轮廓有什么区别?
地标是被检测出的脸上的一个单点,如眼,鼻,口等. 轮廓(英語:A Contour)是一列可以勾勒出面部特征的分数,如面部椭圆形,眉毛,眼睛或唇. 通过 landmarkMode 通过 contourMode 选项。 注意: 轮廓只返回最多5个面相 .
我怎么才能发现一个人是笑着还是睁开眼睛?
设定 classificationMode 选项到 All。然后检测到的面孔中包含 smilingProbability, (中文(简体) ), leftEyeOpenProbability,以及 rightEyeOpenProbability 属性,每个值在 0.0至 1.0 之间.
此插件与 Face Mesh 检测插件有何不同 ?
这个插件检测面相,有边框,地标,轮廓,以及Android和iOS的分类. 这个 ML Kit 面膜检测 插件返回一个由468个3D点和三角形信息组成的稠密网格,用于检测到的面相,但只在Android上可用.
我能用这个插件吗? 有Ionic、React、Vue或Angular?
是的,插件是框架不可知的。 它在任意网络框架的Capacitor app中工作,包括有Angular,React,或Vue的Ionic,以及平版JavaScript等项目.
相关插件
- ML Kit 面膜检测: 探测器在图像中以468个3D分来面对 meshes.
- ML 基特自拍分裂: 以 ML Kit自拍片段为背景的自拍片段.
- ML Kit 主题分割: 以ML Kit主题片段从背景中分离出主题.
- ML Kit Pose 检测: 探测出的尸体与同一场景中的相貌并列.
术语和隐私
此插件使用 Google ML Kit (Google ML Kit) 页面存档备份,存于互联网档案馆数字 :
通讯
随时更新有关卡帕韦索姆、Capacitor和Ionic生态系统的最新消息和最新消息,因为我们 《卡帕索克通讯》。 。 。 .
更改日志
见 变动情况。 。 。 .
许可证
见 自由主义。 。 。 .
[^1]: 这个项目不附属于Google LLC或其任何子公司或子公司,也不获得其认可、支持、赞助或批准.