# AndroidFaceRDemo **Repository Path**: gdyy1/android-face-rdemo ## Basic Information - **Project Name**: AndroidFaceRDemo - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-24 - **Last Updated**: 2024-12-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: Android, 人脸身份识别 ## README ## 这是一个AI 人脸身份识别,安卓demo. ### 1. 人脸身份识别使用步骤 - 激活人脸拿到key - 导入所有人的图片到指定的路径 - 使用前置摄像头进行人脸身份识别,不同的设备可能前置摄像头参数会不一致. ![face](https://gitee.com/gdyy1/android-face-rdemo/raw/master/video/face.gif) #### 这是个人开发的项目,目前没有做适配,可能部分设备会跑不起来.人脸目前使用的onnxruntime 理论上可以在任何安卓设备里使用。 ### sdk功能介绍 所有人脸功能来自FacRecognizeEntry ```kotlin /** * 初始化引擎 * @param context 上下文环境 * @param key 激活码 * @param faceRecognizeListener 设置回调 * @param isStrictMode 是否严格模式,必须人脸完整也正向才行 * @param similarThreshold 最小的人连相似度,在人脸匹配的时候用的到 * @param maxInDetectNum 推理引擎里最大可以保留多少张图片,因为目前的人脸识别大概在3-4张每秒,如果在引擎里的太多图片会导致内存暴涨,或者丢失个别图片的可能 */ suspend fun initFace(context: Context, key: String, faceRecognizeListener: FaceRecognizeListener, isStrictMode: Boolean = true, similarThreshold: Float = 0.7f, maxInDetectNum: Int = 3) /** * 强制终止所有人脸导入库的操作 */ fun stopAllToDB() /** * 在不需要的时候,注销掉人脸模块。可以腾出一些内存和释放一些性能 */ suspend fun deInitFace() /** * 将一些图片保存到人脸库里面去 * @param files 人脸的图片文件,以人脸身份命名的图片 * @return 是否有执行 */ fun allToDB(files: List): Boolean /** * 单张图片识别 * @param buffer 要输入的图片的buffer * @param width 宽 * @param height 高 * @param format buffer里面的图像格式 * @param name 这个buffer的名字,用于回调时区分是哪一张图片 * @param needCompareFaceNameList 需要比对的人脸对象的名字。 */ fun putBuffer( buffer: ByteBuffer, width: Int, height: Int, format: BufferFormat, name: String, rotation: Int, needCompareFaceNameList: List? = null, ) /** * 删除这些名字的人脸库 */ suspend fun deleteFaceDB(identityIds: List) /** * 删除所有的人脸库 */ suspend fun deleteAllFaceDB() /** * 获得所有在人脸库里的人脸名字 */ suspend fun getDBIdentitieNameList(): List //结构体含义 /** * 名字,相似度 */ data class FaceSimilar(val name: String, val similar: Float) /** * @param confidence 这个框的人脸可信度, * @param confidence 框的左上和右下两个点的值, * @param best5 相似度最高的5个人名字及相似度 */ data class Best5Similar(val confidence: Float, val box: List, val best5: List) /** * @param imageName 原始图片的名字 * @param faces 有哪几个人脸 */ data class FaceRResult(val imageName: String, val faces: List) ```