我要求只显示图像中的脸部。我试图只使用android本机方法来实现它。
我可以使用以下代码从Image检测面部:
public void detectFaces() {
Log.d("FaceDet", "Detecting faces....");
// Convert bitmap in 556
Bitmap tmpBmp = image.copy(Config.RGB_565, true);
FaceDetector faceDet = new FaceDetector(tmpBmp.getWidth(), tmpBmp.getHeight(), MAX_FACES);
Face[] faceList = new Face[MAX_FACES];
faceDet.findFaces(tmpBmp, faceList);
Log.d("FaceDetLength", "Face ["+faceList.length+"]");
// Log the result
for (int i=0; i < faceList.length; i++) {
Face face = faceList[i];
Log.d("FaceDet", "Face ["+face+"]");
if (face != null) {
Log.d("FaceDet", "Face ["+i+"] - Confidence ["+face.confidence()+"]");
PointF pf = new PointF();
face.getMidPoint(pf);
Log.d("FaceDet", "\t Eyes distance ["+face.eyesDistance()+"] - Face midpoint ["+pf+"]");
RectF r = new RectF();
r.left = pf.x - face.eyesDistance() / 2;
r.right = pf.x + face.eyesDistance() / 2;
r.top = pf.y - face.eyesDistance() / 2;
r.bottom = pf.y + face.eyesDistance() / 2;
rects[i] = r;
}
}
this.invalidate();
}
现在我想从这张图片中仅裁剪脸部。我怎样才能做到这一点 ?我已经通过以下链接:
Crop Image with face detection in android
但是,上述链接中提到的代码并不适用于所有图像。如何仅裁剪图像中的面部?任何建议都有很大帮助。