VideoProcessor 接口文档
人脸检测器,检测图片获取人脸区域,关键点信息。用于美颜,图片人脸检测等。
1. 构造方法
同步构造方法
VideoProcessor videoProcessor = (VideoProcessor) CVCenter.getInstance().syncNewDetector(DetectorConstance.DETECTOR_TYPE_FACE);
异步构造方法
CVCenter.getInstance().asyncNewDetector(DetectorConstance.DETECTOR_TYPE_FACE, new DetectorListener.OnDetectorCreatedListener() { @Override public void onCreated(int type, Object detector) { Log.d(TAG, "onCreated: " + type + "," + detector); VideoProcessor videoProcessor = (VideoProcessor) detector; } @Override public void onFailed(String msg) { Log.e(TAG, "onFailed: " + msg); } });
2. 检测方法
MMFrame mmcvFrame = new MMFrame();
VideoInfo info = new VideoInfo();
mmcvFrame.setFormat(MMFrame.MMFormat.FMT_NV21);
mmcvFrame.setDataPtr(data);//data为相机或者图片数据
mmcvFrame.setDataLen(data.length);//数据的大小
mmcvFrame.setWidth(width);//图片宽度
mmcvFrame.setHeight(height);//图片高度
mmcvFrame.setStep_(width);//步距,在nv21模式下,等于宽度的值
VideoParams params = new VideoParams();
params.rotate_degree_ = rotateDegree;//旋转角
params.restore_degree_ = restoreDegree;//手机相机安装角度
params.fliped_show_ = flipedShow;//是否是前置,前置需要翻转
params.eye_classify_switch_ = true;//眨眼检测
videoProcessor.ProcessFrame(mmFrame, params, info);//执行人脸检测
VideoParams 主要字段介绍
params.detect_single_frame_ = false;//true时支持静态图片扫描,false支持视频流扫描
params.use_npd_ = true;
params.asynchronous_save_features_ = true;//动态扫描的时候,可以提高效率
params.save_features_version_ = FaceFeaturesParams.BigFeatureVersion.V2;//指定生成大特征的尺寸:v1是136*136的大特征,v2是200*200的大特征
params.eye_classify_switch_ = true; //眨眼检测开关
params.pose_estimation_type_ = POSE_ESTIMATION_WITH_EULERS;
VideoInfo 字段介绍
public class VideoInfo extends FacesInfo {
...
public FaceAttribute[] faces_attributes_;//人脸属性集合,如果有两个人,则数组的大小为2;属性包括表情,正闭眼
...
}
FaceAttibute 主要字段
public float left_eye_close_prob_ = -1;//左眼闭眼的系数
public float right_eye_close_prob_ = -1;//右眼闭眼的系数
public int expression_ = -1;//表情,-1: unknown, 0: other, 1: duzhui, 2:smile
同时,VideoInfo还继承了FaceInfo
public class FacesInfo implements Serializable {
public SingleFaceInfo[] facesinfo_;//人脸集合,包含人脸具体信息
}
SingleFaceInfo 主要字段
public int tracking_id_;//trackId,追踪人脸的id,人脸丢失或切换后会改变
public float[] orig_face_rect_;//相对于原图的人脸区域矩形
public float[] orig_landmarks_68_; //相对于原图的68个关键点,同样还有96、104、137、87个点
public float[] face_rect_;//坐标转换后的人脸位置矩形
public float[] landmarks_68_;//坐标转换后的68个关键点,同样还有96、104、137、87个点
public float[] euler_angles_;//欧拉角,用来描述人脸的姿态
3. 释放方法
videoProcessor.Realease();