Bagaimana cara menggunakan data Rect rect = face.getBoundingBox() untuk memotong wajah yang terdeteksi dari bitmap dan menyimpannya sebagai bitmap baru. Saya telah mencoba membuat bitmap menggunakan rect.left dll dan hanya menampilkan wajah yang diekstraksi dalam tampilan gambar.. tetapi tampaknya tidak berhasil.

Juga, apakah mungkin untuk mengakses wajah secara langsung? Jika saya memahami dengan benar bahwa detektor membuat Daftar FirebaseVisionFace, apa daftar ini? Bagaimana daftar wajah? Apakah mungkin untuk mengaksesnya?

private void processFaceDetection(final Bitmap bitmap) {
        FirebaseVisionImage firebaseVisionImage = FirebaseVisionImage.fromBitmap(bitmap);  //firebaseVisionImage is an object created from bitmap firebase uses to detect faces

        FirebaseVisionFaceDetectorOptions firebaseVisionFaceDetectorOptions  = new FirebaseVisionFaceDetectorOptions.Builder().build();

        FirebaseVisionFaceDetector firebaseVisionFaceDetector = FirebaseVision.getInstance().getVisionFaceDetector(firebaseVisionFaceDetectorOptions);

        firebaseVisionFaceDetector.detectInImage(firebaseVisionImage).addOnSuccessListener(new OnSuccessListener<List<FirebaseVisionFace>>() {
            @Override
            public void onSuccess(List<FirebaseVisionFace> firebaseVisionFaces) {
                int counter = 0;

                for (FirebaseVisionFace face : firebaseVisionFaces) {
                    Rect rect = face.getBoundingBox();
                    RectOverlay rectOverlay = new RectOverlay(graphicOverlay, rect);
                    graphicOverlay.add(rectOverlay);
                    Bitmap faceSaved = Bitmap.createBitmap(Math.round(Math.abs(rect.left - rect.right)), Math.round(Math.abs(rect.top - rect.bottom)), Bitmap.Config.ALPHA_8);
                    imageview.setImageBitmap(facesaved);
                    imageview.setVisibility(View.VISIBLE);
                    counter++;

                }
0
ThomasLYIT 1 Juni 2020, 21:53

1 menjawab

Jawaban Terbaik

JAWABAN: Untuk menggunakan data rect, yang dapat dikumpulkan menggunakan rect.toShortString(), menghasilkan 4 nilai untuk kiri, atas, kanan, bawah. yaitu [280.495][796.1011]. Ini dibuat oleh FirebaseVisionFaceDetector dan disimpan dalam daftar (Daftar) untuk setiap wajah yang terdeteksi.

Untuk menyimpan data bitmap yang terkandung dalam rect (wajah) yang berbeda

for (FirebaseVisionFace face : firebaseVisionFaces) {
Rect rect = face.getBoundingBox();

Bitmap original = Bitmap.createScaledBitmap(capturedImage, cameraView.getWidth(), cameraView.getHeight(), false); //scaled bitmap created from captured image

Bitmap faceCrop = Bitmap.createBitmap(original, rect.left, rect.top, rect.width(), rect.height()); //face cropped using rect values

FaceCrop berisi data bitmap khusus wajah yang terdapat dalam parameter rect.

Semoga ini membantu....

0
ThomasLYIT 2 Juni 2020, 19:08