如何使用Microsoft的Face API识别用户?

时间:2018-04-12 13:30:51

标签: android face-api

我正在做一个Android应用程序,它捕获照片以验证用户。 我正在尝试使用少量图像创建personGroup。但我得到了这个错误。

  

com.microsoft.projectoxford.face.rest.ClientException:人员组ID无效。

我的代码是,

public fun createPersonGroup(personGroupId: String, personGroupName: String) {
    faceServiceClient.createPersonGroup(personGroupId, personGroupName, null)
}

public fun addPersonToGroup(personGroupId: String, name: String, pathToImages: File) {
    val person = faceServiceClient.createPerson(personGroupId, name, null)
    detectAndRegister(personGroupId, person, pathToImages)
}

private fun detectAndRegister(personGroupId: String, person: CreatePersonResult?, pathToImages: File) {

    for (file in pathToImages.listFiles()) {
        val stream = file.inputStream()
        faceServiceClient.addPersonFace(personGroupId, person!!.personId, stream, null, null)
    }

    trainingAI(personGroupId)
}

private fun trainingAI(personGroupId: String) {
    faceServiceClient.trainPersonGroup(personGroupId)
    var trainingStatus: TrainingStatus? = null

    while (true) {
        trainingStatus = faceServiceClient.getPersonGroupTrainingStatus(personGroupId)
        if (trainingStatus!!.status != TrainingStatus.Status.Running) {
            runOnUiThread { progressDialog.dismiss() }
            break
        }
    }
}

2 个答案:

答案 0 :(得分:2)

检查您是否按照正确的顺序进行操作。

创建人员组。 将用户添加到包含图片的人员组。 训练人群。 尝试识别人员组内的图片。

同样路易斯说,检查你没有使用任何无效字符。

答案 1 :(得分:0)

根据Face API reference v1.0,群组ID的有效字符包括数字更低情况下的英文字母,' - '和' _'。 personGroupId的最大长度为64。