基于ML Kit 人脸识别,让可视化应用更智能

MLKit是谷歌为移动开发者打造的机器学习工具包,提供图像打标、文本识别、人脸检测等功能,优化移动设备性能,易于集成现有解决方案或自定义算法。

ML Kit 介绍

官网地址:https://developers.google.cn/ml-kit/

给移动开发者的机器学习

ML Kit是一个强大易用的工具包,它将谷歌在机器学习方面的专业知识带给了普通的移动应用开发者。

针对移动设备进行 了优化

机器学习可以让你的应用更有吸引力,更加的个性化,并且提供了已经在移动设备优化过的解决方案。

由Google专业知识构建

ML Kit提供的技术已经在Google内部长期使用。

全面而且易于使用

你可以使用现有的解决方案(基于API),也可以使用自己的算法模型。你可以根据需要选择是离线还是在线使用。

基于API,无缝的将机器学习嵌入到你的APP中

  1. 图像打标,可以识别图像中的物体,位置,活动形式,动物种类,商品等等。

  2. 文本识别,从图像中识别并提取文字。

  3. 人脸检测,检测人脸和人脸的关键点。

  4. 条码扫描,扫描和处理条码。

  5. 地标识别,在图像中识别比较知名的地标。

  6. 智能回复,提供符合上下文语境的文字回答。

基于ML Kit 人脸识别

google官方给出了一个例子,上手很容易
地址为:https://github.com/firebase/quickstart-android/tree/master/mlkit

mlkit
我们可以clone下来并且运行, 但是会提示少了文件google-services.json错误

创建google-services.json

打开你的fieabase网址:https://console.firebase.google.com/u/0/
你应该有自己的项目地址。

创建一个新的项目,或者在你已经有的项目中加入新的app都可以。这个gson文件都是根据你的包名去生成的。在一个项目中可以加很多的App生成的json文件是根据项目去生成的,一个项目有多个app,在你生成的json文件中会有不项目中所有app的配置,当一个项目只哦有一个App的时候,在json文件中只有一个app的配置。

添加项目

添加项目
输入项目名称

选择安卓应用

输入信息

点击注册

copy json文件到app目录

在这里插入图片描述

mlkit代码分析

设置检测这些点的人脸检测器只需短短几行代码。

lazy var vision = Vision.vision()
let options = VisionFaceDetectorOptions()
options.contourMode = .all
let faceDetector = vision.faceDetector(options: options)

轮廓点还可以实时更新。为达到理想的帧速率,人脸探测器默认配置为 fast 模式。当您准备好检测面部的点时,请向 ML Kit 发送一张图像或一个缓冲区供其处理。

faceDetector.process(visionImage) { faces, error in
 guard error == nil, let faces = faces, !faces.isEmpty else { return }
 for face in faces {
   if let faceContour = face.contour(ofType: .face) {
     for point in faceContour.points {
       print(point.x) // the x coordinate
       print(point.y) // the y coordinate
     }
  }
} 

人脸识别回调

    @Override
    protected void onSuccess(
            @Nullable Bitmap originalCameraImage,
            @NonNull List<FirebaseVisionFace> faces,
            @NonNull FrameMetadata frameMetadata,
            @NonNull GraphicOverlay graphicOverlay) {
        graphicOverlay.clear();
        if (originalCameraImage != null) {
            CameraImageGraphic imageGraphic = new CameraImageGraphic(graphicOverlay, originalCameraImage);
            graphicOverlay.add(imageGraphic);
        }
        for (int i = 0; i < faces.size(); ++i) {
            FirebaseVisionFace face = faces.get(i);

            int cameraFacing =
                    frameMetadata != null ? frameMetadata.getCameraFacing() :
                            Camera.CameraInfo.CAMERA_FACING_BACK;
            FaceGraphic faceGraphic = new FaceGraphic(graphicOverlay, face, cameraFacing);
            graphicOverlay.add(faceGraphic);
        }
        graphicOverlay.postInvalidate();
    }

最终的效果如图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuiran

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值