超简单 CameraX 人脸识别效果封装

本文介绍如何利用CameraX和Google的人脸识别库实现快速且兼容多平台的人脸识别功能,包括单人和多人识别,进度跟踪,Dialog调用及结果回调。项目依赖详细列出,同时提供了Demo代码和GitHub仓库链接。
摘要由CSDN通过智能技术生成

超简单 CameraX 人脸识别效果封装

项目代码在最后面!!!!跳转到最后

本项目基于Google免费开源人脸识别库和CameraX封装实现,各Android机型兼容。

识别效果

单人脸识别效果:

  • 支持识别进度,可通过参数修改识别可信度,也是识别灵敏度
  • 识别进度监听,支持修改识别进度条颜色
  • 提供Dialog直接调用
  • 识别位置人脸框绘制
  • 进度加载完成可拿到识别结果,识别结果以base64返回

在这里插入图片描述

多人脸识别效果:

  • 支持识别进度,可通过参数修改识别可信度,也是识别灵敏度
  • 支持修改识别的最大人脸数量 默认10
  • 提供Dialog,Fragment调用
  • 识别位置人脸框绘制
  • 点击识别列表可拿到识别结果,识别结果以base64返回

在这里插入图片描述

项目依赖库所需要的依赖


    //OCR
    implementation 'com.rmtheis:tess-two:9.1.0'

    implementation 'androidx.appcompat:appcompat:1.2.0'
    // CameraX core library
    implementation "androidx.camera:camera-core:1.1.0-beta03"
    // CameraX Camera2 extensions
    implementation "androidx.camera:camera-camera2:1.1.0-beta03"
    // CameraX Lifecycle library
    implementation "androidx.camera:camera-lifecycle:1.1.0-beta03"
    // CameraX View class
    implementation "androidx.camera:camera-view:1.1.0-beta03"

    //工具类
    implementation 'com.blankj:utilcodex:1.31.0'
    //权限
    implementation 'com.github.getActivity:XXPermissions:13.6'

项目依赖库所需要的权限

   <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
   <uses-permission android:name="android.permission.CAMERA"/>

简单调用

在git下载项目Demo代码后,可参考下方方式依赖代码进行人脸识别的调用:
使用方式和Dialog一致
单人脸Dialog调用

                    FaceChooseDialog faceChooseDialog=new FaceChooseDialog();
                    faceChooseDialog.setGetFace(new FaceChooseDialog.GetFace() {
                        @Override
                        public void getPhoto(String base64) {
                            Bitmap resultbitmap= Base64Utils.base64ToBitmap(base64);
                            new Handler(Looper.getMainLooper()).post(new Runnable() {
                                @Override
                                public void run() {
                                    result_img.setImageBitmap(resultbitmap);
                                }
                            });
                        }

                        @Override
                        public void error(String msg) {
                            new Handler(Looper.getMainLooper()).post(new Runnable() {
                                @Override
                                public void run() {
                                    Toast.makeText(requireActivity(),msg,Toast.LENGTH_SHORT).show();
                                }
                            });
                        }
                    });
                }
				faceChooseDialog.show(getParentFragmentManager(),"faceChooseDialog");//这里的fragmentmanger根据实际情况传入,不要照抄

多人脸Dialog调用

    				FaceMultiChooseDialog faceMultiChooseDialog=new FaceMultiChooseDialog();
                    faceMultiChooseDialog.setGetFace(new FaceMultiChooseDialog.GetFace() {
                        @Override
                        public void getPhoto(String base64) {
                            Log.e("TEST","getPhoto"+base64);
                            Bitmap resultbitmap= Base64Utils.base64ToBitmap(base64);
                            new Handler(Looper.getMainLooper()).post(new Runnable() {
                                @Override
                                public void run() {
                                    result_img.setImageBitmap(resultbitmap);
                                }
                            });
                        }

                        @Override
                        public void error(String msg) {
                            new Handler(Looper.getMainLooper()).post(new Runnable() {
                                @Override
                                public void run() {
                                    Toast.makeText(requireActivity(),msg,Toast.LENGTH_SHORT).show();
                                }
                            });
                        }
                    });
                }
                faceMultiChooseDialog.show(requireFragmentManager(),"faceMultiChooseDialog");//这里的fragmentmanger根据实际情况传入,不要照抄

具体实现逻辑可参阅下方项目代码

项目代码仓库

如果直接复制可能会出现代码缺陷,完整代码请去仓库下载
如果觉得还行,耽误您几秒钟的时间去我的仓库点点star,万一以后用到了呢?

CameraXFace 开源项目

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值