本文主要是介绍android开发camera自动人脸,Android camera实时预览 实时处理,人脸识别示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Android camera实时预览 实时处理,面部认证。
预览操作是网友共享的代码,我在继承SurfaceView 的CameraSurfaceView 中加入了帧监听事件,每次预览监听前五个数据帧,在处理做一个面部识别。
先看目录关系
自定义控件CameraSurfaceView.java
自定义接口方法CameraInterface.java
CameraActivity预览界面。
CameraSurfaceView.Java
package com.centaur.camera.preview;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.ImageFormat;
import android.graphics.Matrix;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.YuvImage;
import android.hardware.Camera;
import android.util.AttributeSet;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import com.centaur.camera.camera.CameraInterface;
import java.io.ByteArrayOutputStream;
/**
* Created by Tianchaoxiong on 2017/1/16.
*/
public class CameraSurfaceView extends SurfaceView implements SurfaceHolder.Callback,Camera.PreviewCallback{
private static final int FACENUM = 5;
private static final String TAG = "yanzi";
CameraInterface mCameraInterface;
Context mContext;
SurfaceHolder mSurfaceHolder;
private boolean isFinish;
//传输五个bitmap数组
Bitmap [] bitmaps = new Bitmap[5];
int number = 0;//作为计数器用
OnFaceCollectListener onFaceCollectListener = null;
public CameraSurfaceView(Context context,AttributeSet attrs) {
super(context,attrs);
mContext = context;
mSurfaceHolder = getHolder();
mSurfaceHolder.setFormat(PixelFormat.TRANSPARENT);//translucent半透明 transparent透明
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mSurfaceHolder.addCallback(this);
}
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
Log.i(TAG,"surfaceCreated...");
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder,int i,int i1,int i2) {
Log.i(TAG,"surfaceChanged...");
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
Log.i(TAG,"surfaceDestroyed...");
CameraInterface.getInstance().doStopCamera();
}
public SurfaceHolder getSurfaceHolder(){
return mSurfaceHolder;
}
/**
* 收集五张图片 监听器
*/
public static interface OnFaceCollectListener {
/**
* 收集五张face
* @param bitmaps 返回的五张脸的数组
*/
void OnFaceCollected(Bitmap[] bitmaps);
/**
* face重新绘制
* @param isStart 是否重新收集
*/
void OnFaceCollectStart(boolean isStart);
}
/**
* 设置面部的监听器
* @param onFaceCollectListener
*/
public void setOnFaceCollectListener(OnFaceCollectListener onFaceCollectListener){
if(onFaceCollectListener!=null){
this.onFaceCollectListener = onFaceCollectListener;
}
}
/***
* 想在这里做一个监听处理 收五侦 传输出去
* @param b
这篇关于android开发camera自动人脸,Android camera实时预览 实时处理,人脸识别示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!