Android上调用百度人脸识别接口

写了一个简单的调用百度人脸识别在线的JAVA接口,识别率挺高的,但是目前写得还不是很全面,然后打开相册选取图片那一部分,以及工具类代码,是有参考别人写的代码,具体是摘自哪里之前没有保存。

这里贴一些主要的代码。
人脸对比部分:

package ss.demo14;

import android.Manifest;
import android.content.ContentUris;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Handler;
import android.os.Message;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.FileProvider;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.alibaba.fastjson.JSONObject;

import org.apache.log4j.chainsaw.Main;

import java.io.File;
import java.text.DecimalFormat;

import ss.demo14.mets.CFace;
/*
 *@Author:Swallow
 *@Date:2018/12/12
 */
public class FaceActivity extends AppCompatActivity implements View.OnClickListener {

    public static final int SELECT_PHOTO1 = 2;
    public static final int SELECT_PHOTO2 = 3;
    public static final int TAKE_PHOTO = 4;

    private ImageView imageViewShow1;
    private ImageView imageViewShow2;
    public TextView tv_cmp;
    String path1, path2,fsres;

    Button btn1, btn2, btn_make;
    //private Bitmap orc_bitmap;
    //新建Handler的对象,在这里接收Message,然后更新TextView控件的内容
    //这一部分暂时没时间完成
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_face);
        btn1 = (Button) findViewById(R.id.photo1);
        btn2 = (Button) findViewById(R.id.photo2);
        btn_make = (Button) findViewById(R.id.make);

        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
        btn_make.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.photo1:
                if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                        != PackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
                }else{
                openAlbum1();
                }
                break;
            case R.id.photo2:
                if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                        != PackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
                }else {
                    //opencare();
                openAlbum2();
                }
                break;
            case R.id.make:
                if(path1!=null&&path2!=null){
                    sendRequestWithHttpClient();
                    tv_cmp = (TextView)findViewById(R.id.cmp);
                    tv_cmp.setText(fsres);
                }else{
                    Toast.makeText(this, "图片获取失败", Toast.LENGTH_LONG).show();
                }
                break;
        }
    }
//开启子线程
    private void sendRequestWithHttpClient() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                CFace cf = new CFace();
                String ss = cf.cface(path1, path2);
                //获取JSON字符串中的数据
                String result = JSONObject.parseObject(ss).getString("result");
                float score = JSONObject.parseObject(result).getFloatValue("score");
                Log.v("score", "score"+score);
                //Double so = score;
                DecimalFormat df = new DecimalFormat("0.00");
                Double cny = Double.parseDouble(df.format(score));
                String fsres = face(cny);
            }
        }).start();
    }

    public String face(double d){
        //ss=null;
        if(d>=75.00){
            fsres = "这两个人是同一个人";
        }
        else {
            fsres = "这两个人不是同一个人";
        }
        Log.v("ss",fsres);
        return fsres;
    }

    //按钮一事件
    public void openAlbum1() {
        Intent intent = new Intent("android.intent.action.GET_CONTENT");
        intent.setType("image/*");
        startActivityForResult(intent, SELECT_PHOTO1);
    }

    //按钮二事件
    public void openAlbum2() {
        Intent intent = new Intent("android.intent.action.GET_CONTENT");
        intent.setType("image/*");
        startActivityForResult(intent, SELECT_PHOTO2);
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            //打开相册后返回
            case SELECT_PHOTO1:
                if (resultCode == RESULT_OK) {
                    //判断手机系统版本号
                    if (Build.VERSION.SDK_INT > 19) {
                        path1 = handleImgeOnKitKat(data);
                        Bitmap bmap1 = displayImage(path1);//获取图片Bitmap显示到对应的控件上
                        if (bmap1 != null) {
                            imageViewShow1 = (ImageView) findViewById(R.id.iv_show1);
                            imageViewShow1.setImageBitmap(bmap1);
                        }
                    } else {
                
  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Android百度人脸识别Demo是一个基于百度人脸识别技术开发的Android应用程序示例。该Demo旨在展示如何使用百度人脸识别SDK来实现人脸的检测、识别和验证等功能。 通过该Demo,我们可以实现以下功能: 1. 人脸检测:能够在图像或摄像头帧中检测人脸的位置、大小和角度信息。 2. 人脸比对:能够对两张人脸图像进行比对,判断是否属于同一人。 3. 人脸搜索:能够对一组已知人脸图像进行搜索,找到与查询人脸最相似的人脸。 4. 人脸注册:能够将一张人脸图像注册到人脸库中,方便后续的比对和搜索操作。 5. 人脸属性分析:能够分析人脸的年龄、性别、表情等属性信息。 使用该Demo,我们可以将百度人脸识别能力集成到我们自己的Android应用程序中,为用户提供更加安全、方便和智能的人脸识别功能。比如,我们可以结合人脸识别技术来实现人脸解锁、人脸支付、人脸签到等应用场景。 在使用百度人脸识别Demo前,我们需要先在百度开放平台注册账号,创建应用并获取到相应的API Key和Secret Key,然后将其配置到Demo中。此外,我们还需要在Android设备上配置相机权限,以便Demo能够调用摄像头进行人脸检测和识别。 总之,Android百度人脸识别Demo是一个非常实用的示例程序,能够帮助我们了解并应用百度人脸识别功能,为我们的Android应用程序增加更多智能化的特性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值