/**
* 预览回调
*/
private Camera.PreviewCallback previewCallback = new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
Camera.Size size = mCamera.getParameters().getPreviewSize();
try{
YuvImage image = new YuvImage(data, ImageFormat.NV21, size.width, size.height, null);
if(image!=null){
ByteArrayOutputStream stream = new ByteArrayOutputStream();
image.compressToJpeg(new Rect(0, 0, size.width, size.height), 80, stream);
Bitmap bmp = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size());
//人脸检测、特征点定位、姿态估计
//QsFace ret = api.detect("/sdcard/temp.jpg");//对一张本地照片进行人脸分析
QsFace face = api.detectBitmap(bmp);
String label = face.getLabel();
int rectLeft = face.getLeft();
int rectTop = face.getTop();
int rectRight = face.getRight();
int rectBottom = face.getBottom();
ArrayList landmarks = face.getFaceLandmarks();
Log.i("qsface","=====>"+label+","+rectLeft+","+rectTop+","+rectRight+","+rectBottom);
Log.i("qsface","=====>"+landmarks.size());
//获取68个特征点
//详细参考:https://cloud.githubusercontent.com/assets/16308037/24229391/1910e9cc-0fb4-11e7-987b-0fecce2c829e.JPG
ArrayList points = face.getFaceLandmarks();
for (Point p : points) {
Log.i("p=>", points.toString());
}
//headpose
//详细参考:https://www.cnblogs.com/21207-iHome/p/6894128.html
Log.i("qsface","===angle==>"+face.getPitch()+","+face.getYaw()+","+face.getRoll());
stream.close();
}
}catch(Exception ex){
Log.e("Sys","Error:"+ex.getMessage());
}
}
};