Android学习——人脸识别

    xiaoxiao2022-07-03  185

    人脸识别

    人脸识别可以做什么

    人脸检测:在图片中找到一个或多个人脸的位置,云端返回人脸坐标到客户端,来定位人脸在图片中的位置。面部关键点检测:在检测到人脸框中,进一步定位人脸的五官和轮廓位置,目前采用关键点21点模型定位位置,关联关键你点的平均精确度高达96%。人脸验证:用于快速判定两张照片是否为同一个人,此项技术可用于手机/电脑解锁、人员考勤、身份验证等各个领域。全球理领先的精确率在目前公开的LWF测试中,人脸验证可达到世界第一的99.15%,比肉眼更精确。

    人脸注册

    下载sdk,并导入架包

    添加权限

    <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CAMERA"/> package com.example.face; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Environment; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.Toast; import com.iflytek.cloud.FaceRequest; import com.iflytek.cloud.RequestListener; import com.iflytek.cloud.SpeechConstant; import com.iflytek.cloud.SpeechError; import com.iflytek.cloud.SpeechUtility; import java.io.ByteArrayOutputStream; public class MainActivity extends AppCompatActivity { private ImageView imageView1; private static final int REQUESR_CODE_CAPTURE_CAMERA=0x1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView1=findViewById(R.id.imageView); SpeechUtility.createUtility(this, SpeechConstant.APPID+"=5ce4a75c"); } //人脸注册 public void regClick(View view){ Intent getImageByCamera=new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(getImageByCamera,REQUESR_CODE_CAPTURE_CAMERA); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { if (requestCode== Activity.RESULT_OK&&requestCode==REQUESR_CODE_CAPTURE_CAMERA){ Bitmap bitmap= (Bitmap) data.getExtras().get("data"); imageView1.setImageBitmap(bitmap); FaceRequest face=new FaceRequest(this); face.setParameter(SpeechConstant.WFR_SST,"reg"); face.setParameter(SpeechConstant.AUTH_ID,"csy123"); //把bitmap转换成字节数组 ByteArrayOutputStream out=new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG,100,out); byte[] imgData=out.toByteArray(); face.sendRequest(imgData,mRequestListener); } } private RequestListener mRequestListener=new RequestListener() { @Override public void onEvent(int i, Bundle bundle) { } @Override public void onBufferReceived(byte[] bytes) { } @Override public void onCompleted(SpeechError speechError) { if (speechError==null){ Toast.makeText(MainActivity.this, "注册成功", Toast.LENGTH_SHORT).show(); } } }; }

    人脸检测

    //人脸登录 public void loginClick(View view){ Intent getImageByCamera=new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(getImageByCamera,REQUESR_CODE_CAPTURE_CAMERA_LOGIN); }

    在onActivityResult方法出加以下代码

     

    else if (requestCode== Activity.RESULT_OK&&requestCode==REQUESR_CODE_CAPTURE_CAMERA_LOGIN){ Bitmap bitmap= (Bitmap) data.getExtras().get("data"); imageView1.setImageBitmap(bitmap); FaceRequest face=new FaceRequest(this); face.setParameter(SpeechConstant.MFV_SST,"verify"); face.setParameter(SpeechConstant.AUTH_ID,"csy1234"); // 设置验证模式,单一验证模式:sin face.setParameter(SpeechConstant.MFV_VCM, "sin"); //把bitmap转换成字节数组 ByteArrayOutputStream out=new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG,100,out); byte[] imgData=out.toByteArray(); face.sendRequest(imgData,mRequestListener); }

     监听器函数中加

    @Override public void onBufferReceived(byte[] bytes) { String json=new String(bytes); Log.i("tag",json); }

     

    最新回复(0)