首页 > 解决方案 > 使用 ML 套件进行人脸检测后屏幕变黑

问题描述

上传图像功能正在工作,但是当启动检测时,检测到人脸,然后整个部分ImageView变黑。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tempbitmap= Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(),Bitmap.Config.RGB_56);

    imageView = (ImageView)findViewById(R.id.imageView);
    button = (Button) findViewById(R.id.button)
    canvas = new Canvas(tempbitmap);
    final Paint paint = new Paint();
    paint.setStrokeWidth(5);
    paint.setColor(Color.RED);
    paint.setStyle(Paint.Style.STROKE);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            FaceDetector faceDetector = new FaceDetector.Builder(getApplicationContext())
                    .setTrackingEnabled(false)
                    .setLandmarkType(FaceDetector.ALL_LANDMARKS)
                    .setMode(FaceDetector.FAST_MODE)
                    .build();

            frame = new Frame.Builder().setBitmap(bitmap).build();
            SparseArray<Face> sparseArray = faceDetector.detect(frame);


            for (int i=0;i<sparseArray.size();i++)
            {

                Face face = sparseArray.valueAt(i);
                float x = face.getPosition().x;
                float y = face.getPosition().y;
                float x1 = x + face.getWidth();
                float y1 = y + face.getHeight();
                RectF rectF = new RectF(x,y,x1,y1);
                canvas.drawRoundRect(rectF,2,2,paint);

            }
            imageView.setImageBitmap(tempbitmap);
        }
    });
}

标签: androidfirebase-mlkit

解决方案


推荐阅读