Android 虹软人脸检测+旷世人脸分析

虹软人脸检测测试页面:
https://ai.arcsoft.com.cn/technology/faceDetection.html

首先注册虹软账号新建应用:

image.png

然后点击下载解压文件夹:

Android 虹软人脸检测+旷世人脸分析_第1张图片
image.png

我们将对应的libs文件放到项目对应的目录内,
在Activity onCreate方法内

        /**
         * 初始化虹软人脸识别
         */
        AFD_FSDKVersion version = new AFD_FSDKVersion();
        engine = new AFD_FSDKEngine();
        err = engine.AFD_FSDK_InitialFaceEngine(Constants.appid, Constants.fd_key, AFD_FSDKEngine.AFD_OPF_0_HIGHER_EXT, 16, 5);
        if (err.getCode() != AFD_FSDKError.MOK) {
            Toast.makeText(FaceAcquisitionActivity.this, getString(R.string.face_recongnition_cshsb) + err.getCode(), Toast.LENGTH_SHORT).show();
        }
        err = engine.AFD_FSDK_GetVersion(version);
        Log.d(TAG, "AFD_FSDK_GetVersion =" + version.toString() + ", " + err.getCode());

然后再拍照完之后:

        // 用来存放检测到的人脸信息列表
        List result = new ArrayList<>();
        byte[] data = BtpToNv21.bitmapToNv21(bm, 640, 480);
        //输入的data数据为NV21格式(如Camera里NV21格式的preview数据),其中height不能为奇数,人脸检测返回结果保存在result。
        err = engine.AFD_FSDK_StillImageFaceDetection(data, 640, 480, AFD_FSDKEngine.CP_PAF_NV21, result);
        if (!result.isEmpty()) {
            Log.d(TAG, getString(R.string.face_recongnition_jcd) + result.size() + getString(R.string.face_recongnition_zrl));
        } else {
            Log.d(TAG, getString(R.string.face_recongnition_myjcdrl) + ", " + err.getCode());
        }

进行人脸检测。如果检测到人脸我们则进行人脸分析,如果没有人脸我们则返回拍照界面。

旷世人脸分析:

人脸分析api:https://console.faceplusplus.com.cn/documents/4888383
代码示例:https://console.faceplusplus.com.cn/documents/6329752

   private void postImg(Bitmap bmp){
        RequestParams requestParams = new RequestParams();
        requestParams.put("api_key", "你申请的api_key");
        requestParams.put("api_secret", "你申请的api_secret");
        requestParams.put("return_landmark", "1");
        requestParams.put("return_attributes", "gender,age,smiling,headpose,facequality,blur,eyestatus,emotion,ethnicity,beauty,mouthstatus,eyegaze,skinstatus");
        requestParams.put("image_base64",Bitmap2StrByBase64(bmp));
        HttpRestClient.posttup("https://api-cn.faceplusplus.com/facepp/v3/detect", requestParams, new JsonHttpResponseCallback() {
            @Override
            public void callback(int statusCode, JSONObject json) {
                Log.d("facaAcqui","json="+ json);
            }
        });
    }
    /**
     * 通过Base32将Bitmap转换成Base64字符串
     * @param bit
     * @return
     */
    public String Bitmap2StrByBase64(Bitmap bit){
        ByteArrayOutputStream bos=new ByteArrayOutputStream();
        bit.compress(Bitmap.CompressFormat.JPEG, 40, bos);//参数100表示不压缩
        byte[] bytes=bos.toByteArray();
        return Base64.encodeToString(bytes, Base64.DEFAULT);
    }

你可能感兴趣的:(Android 虹软人脸检测+旷世人脸分析)