然后利用SDK中的DetectManage工具对图片进行人脸检测获取年龄性别数据,代码如下:
btn_check = (Button) findViewById(R.id.btn_check);
btn_check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DetectManage.newInstance(FaceRegionDetectActivity.this).getFaceRegion(bitmap, true, true, new FaceRegionCheckListener() {
@Override
public void onFaceRegionCheck(FaceInfo faceInfo, ErrorMsg error) {
dialog.dismiss();
//判断是否成功
if (error.getCode() == 0) {
if (faceInfo.getFaceNum() == 0) {
Toast.makeText(FaceRegionDetectActivity.this, "没有检测到人脸数据!", Toast.LENGTH_SHORT).show();
return;
}
//复制图片bitmap进行绘画操作
Bitmap myBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(myBitmap);
//新建文字画笔
Paint txt = new Paint();
txt.setStrokeWidth(6);
int size = bitmap.getWidth() / 18;
txt.setTextSize(size);
txt.setTextAlign(Paint.Align.LEFT);
txt.setColor(Color.RED);
//新建画框画笔
Paint mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(Color.GREEN);
mPaint.setDither(true);
mPaint.setStrokeWidth(6);
mPaint.setStyle(Paint.Style.STROKE);
//遍历检测到的所有人脸
for (int i = 0; i < faceInfo.getFace().size(); i++) {
Face face = faceInfo.getFace().get(i);
FacePosition info = face.getPosition();
Rect rect = new Rect();
rect.set(info.getLeft(), info.getTop(), info.getRight(), info.getBottom());
canvas.save();
canvas.drawRect(rect, mPaint); //画框
//绘画年龄性别文字
canvas.drawText("年龄:" + face.getAttribute().getAge(),
(info.getLeft() + (info.getRight() - info.getLeft())) / 2, info.getTop() + (info.getBottom() - info.getTop()) / 2, txt);
canvas.drawText("女:" + (float) (face.getAttribute().getGender().get(0) * 100) + "% 男" + (float) (face.getAttribute().getGender().get(1) * 100) + "%",
(info.getLeft() + (info.getRight() - info.getLeft())) / 2, (info.getTop() + (info.getBottom() - info.getTop()) / 2) + 60, txt);
}
canvas.restore();
img_show.setImageBitmap(myBitmap); //重新显示图片
}
}
});
}
});