Обнаружение лица с помощью Google Vision не плавное в предпросмотре камеры в android - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь определить лицо в предпросмотре камеры в android с помощью Google Vision. Это то, что я сделал

@Override
public void onPreview(final byte[] nv21, Camera camera) {

    Camera.Parameters parameters = camera.getParameters();

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    YuvImage yuvImage = new YuvImage(nv21, parameters.getPreviewFormat(), parameters.getPreviewSize().width, parameters.getPreviewSize().height, null);
    yuvImage.compressToJpeg(new Rect(0, 0, parameters.getPreviewSize().width, parameters.getPreviewSize().height), 90, out);
    byte[] imageBytes = out.toByteArray();
    currentBitmap= BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);


    try {
        out.flush();
        out.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    final Frame frame = new Frame.Builder().setBitmap(currentBitmap).build();
    SparseArray<Face> faces = detector.detect(frame);
    if(faces.size()>0){
        //do some operation
    }
}

Теперь проблема в том, что если я делаю так, предварительный просмотр камеры не плавный, а устройство нагревается, однако получение растрового изображения не вызывает никаких проблем. Проблема появляется, когда я пытаюсь выполнить операцию, связанную с обнаружением лица.

Так я инициализирую детектор object

FaceDetector detector = new FaceDetector.Builder(this)
        .setTrackingEnabled(true)
        .setProminentFaceOnly(true)
        .setLandmarkType(FaceDetector.ALL_LANDMARKS)
        .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS)
        .build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...