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

超简单 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 开源项目

猜你喜欢

转载自blog.csdn.net/number_cmd9/article/details/124886730