Android打造圓形相機並實現人臉識別(三)

這裏就主要講下整個人臉識別模塊的接入及使用。

百度AI SDK

首先我們要去百度官網申請一個帳號,接而進入這個網址:

https://console.bce.baidu.com/ai/#/ai/face/overview/index

填完創建信息,就可以去管理應用那兒查看APP_ID和SERECT_KEY,這兩個key到時候需要保存到工程內。

然後在這裏找到人臉識別的SDK

https://ai.baidu.com/sdk

將壓縮包解壓後導入工程並引入爲lib即可。示例代碼(在app.gradle中):

dependencies {
    // ... 省略
    implementation files('libs/aip-java-sdk-4.11.1.jar')
    implementation files('libs/json-20160810.jar')
    implementation files('libs/slf4j-api-1.7.25.jar')
}

接下來就是Code Time 根據SDK說明文檔 先配置一個單例的AipFaceObject

class AipFaceObject private constructor() {

    companion object {
        private var mClient: AipFace? = null

        @Synchronized
        fun getClient(): AipFace {
            if (mClient == null) {
                mClient = AipFace(Const.BAIDU_APP_ID, Const.BAIDU_API_KEY, Const.BAIDU_SECRET_KEY)
                mClient?.setConnectionTimeoutInMillis(2000)
            }
            return mClient!!
        }
    }
}

對於檢測人臉的API而言,可以在上一章所說的在onImageAvailable方法中對Image Captured後,通過onPreview方法回調給業務進行預覽拍好的照片,然後將byteArray通過格式轉換成Base64的圖片,上傳至百度AI服務器進行檢測,具體可配置參數可以去上面一開始所說的官網去查找。這裏是我寫得sample:

private fun detectFace(postImage: String): Boolean {
    var bSuccess = false
    // 人臉檢測
    val detectOptions = HashMap<String, String>()
    detectOptions["face_field"] = "age,gender,race,expression,beauty"
    detectOptions["face_type"] = "LIVE"
    val detectRes = AipFaceObject.getClient().detect(postImage, "BASE64", detectOptions)

    val mText: String
    val mShadowText: String

    if (detectRes.getInt("error_code") == 0) {
        // 檢測成功
        bSuccess = true
        val detectBean = Gson().fromJson<DetectFaceBean>(
            detectRes.getJSONObject("result").toString(), DetectFaceBean::class.java)
        mShadowText = "成功檢測到人臉"
    } else {
        mText = "檢測失敗 請點擊取景框重試"
        mShadowText = "檢測失敗"
    }

    mFragment?.activity?.runOnUiThread {
        switchText(mText, mShadowText)
    }
    return bSuccess
}

最終的效果如最開始的預覽圖所示。

至於項目相關demo的代碼,我過會兒會上傳到github,到時會更新這個博客的~

總結

這次是畢業設計的項目,所以做的還比較粗糙,這裏是給自己做一下學習記錄~歡迎指出不足之處 感謝大佬閱讀

 

更新

項目地址在:https://github.com/CarsonWoo/FaceDetectDemo 

這裏單獨抽了這個組件出來做成了一個小demo

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章