не может обнаружить объекты с помощью firebase mlkit. - PullRequest
0 голосов
/ 15 июня 2019

Я делаю приложение для обнаружения автомобилей на камере и использую Firebase MLKIT для выполнения этой работы.У меня проблема с OnSuccessListener.Я не могу видеть, что это обнаруживает объекты вообще.Я сделал тост для отображения detectedobjects.size, но он ничего не дает.

public class MainActivity extends AppCompatActivity {

    private CameraView cameraview;
    private String TAG;
    Context tt = this;
    DrawRectangle dr;
    TextView label;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cameraview = findViewById(R.id.cameraView);
        cameraview.setLifecycleOwner(this);
        label=findViewById(R.id.label);
        FirebaseApp.initializeApp(this);
        cameraview.addFrameProcessor(new FrameProcessor() {
            @Override
            @WorkerThread
            public void process(@NonNull com.otaliastudios.cameraview.Frame frame) {
                FirebaseVisionImage image = null;
                FirebaseVisionObjectDetector objectDetector = null;

                    byte[] data = frame.getData();
                    FirebaseVisionImageMetadata imageMetadata = new FirebaseVisionImageMetadata.Builder()
                            .setFormat(FirebaseVisionImageMetadata.IMAGE_FORMAT_NV21)
                            .setHeight(480)
                            .setWidth(360)
                            //.setRotation(90)
                            .build();
                    image = FirebaseVisionImage.fromByteArray(data, imageMetadata);
                    FirebaseVisionObjectDetectorOptions options = new FirebaseVisionObjectDetectorOptions.Builder()
                            .setDetectorMode(FirebaseVisionObjectDetectorOptions.SINGLE_IMAGE_MODE)
                            .enableClassification()
                            .build();
                    objectDetector = FirebaseVision.getInstance().getOnDeviceObjectDetector(options);
                    objectDetector.processImage(image)
                            .addOnSuccessListener(
                                    new OnSuccessListener<List<FirebaseVisionObject>>() {
                                        @Override
                                        public void onSuccess(List<FirebaseVisionObject> detectedObjects) {
                                            Toast.makeText(tt, String.valueOf(detectedObjects.size()), Toast.LENGTH_SHORT).show();

                                            for (FirebaseVisionObject obj : detectedObjects) {
                                                Integer id = obj.getTrackingId();
                                                Rect bounds = obj.getBoundingBox();
                                                int cat =obj.getClassificationCategory();
                                                String cot= String.valueOf(cat);
                                                label.setText(obj.getEntityId());
                                                //dr = new DrawRectangle(tt,obj);
                                            }
                                        }
                                    })
                            .addOnFailureListener(
                                    new OnFailureListener() {
                                        @Override
                                        public void onFailure(@NonNull Exception e) {
                                            Toast.makeText(tt, "Oops, something went wrong!",
                                                    Toast.LENGTH_SHORT).show();
                                        }
                                    });
                }

        });

    }
}
...