Android中的图像裁剪面部

时间:2016-05-25 10:26:46

标签: android image image-processing

我要求只显示图像中的脸部。我试图只使用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

但是,上述链接中提到的代码并不适用于所有图像。如何仅裁剪图像中的面部?任何建议都有很大帮助。

0 个答案:

没有答案