Обрезка обнаруженного лица - PullRequest
0 голосов
/ 16 февраля 2019

Я хочу обрезать лицо, обнаруженное по изображению, которое я сделал с моего телефона.Я использую Google Vision API для определения лица.Я видел несколько вопросов, похожих на мои, но они используют openCV.

Я пытался добавить Bitmap.createBitmap ();

, но он может принимать только значения int.но мои значения имеют десятичное число, поэтому это число с плавающей точкой.

это мой код для обнаружения лица:

private void scanFaces(){

     Bitmap bitmap = BitmapFactory.decodeFile(pathToFile);

    if (detector.isOperational() && bitmap != null) {
        editedBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap
                .getHeight(), bitmap.getConfig());
        float scale = getResources().getDisplayMetrics().density;
        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(Color.rgb(255, 61, 61));
        paint.setTextSize((int) (14 * scale));
        paint.setShadowLayer(1f, 0f, 1f, Color.WHITE);
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeWidth(3f);
        Canvas canvas = new Canvas(editedBitmap);
        canvas.drawBitmap(bitmap, 0, 0, paint);
        Frame frame = new Frame.Builder().setBitmap(editedBitmap).build();
        SparseArray<Face> faces = detector.detect(frame);

        }

        if (faces.size() == 0) {

            deleteMediaFile();
            Intent intent = new Intent(FaceRegistration.this, NoFaceDetected.class);
            startActivity(intent);

        }
        else {
            Face face = faces.valueAt(index);
            canvas.drawRect(
                    face.getPosition().x,
                    face.getPosition().y,
                    face.getPosition().x + face.getWidth(),
                    face.getPosition().y + face.getHeight(), paint);
            imageView.setImageBitmap(editedBitmap);
        }
    } else {
        Toast.makeText(getApplicationContext(),"could not set up detector!" , Toast.LENGTH_SHORT).show();
    }
}
...