Приложение, которое я создал, должно распознавать штрих-код, в частности QR-код, по изображению.Исследования продиктовали, что для меня лучше всего использовать ML-Kit Firebase.Я следовал приведенному здесь руководству https://firebase.google.com/docs/ml-kit/android/read-barcodes.
Проблема, однако, заключается в том, что детектор штрих-кода на самом деле никогда не выходит из строя, но вместо этого список возвращаемых штрих-кодов всегда пуст и имеет размер 0. Это не имеет значенияесли это действительный QR-код или случайное изображение.Даже если на изображении 2 или более QR-кода.
Я пытался найти решение, описанное здесь: Библиотека Firebase-ML Kit не может обнаружить штрих-код в устройстве Samsung J5 и ятакже проверил различные руководства YouTube, но безуспешно.
Это код, который сканирует изображение на наличие штрих-кода.Параметры являются действительными изображениями, потому что я также сохраняю те же изображения в каталоге «Изображения» приложения, в котором эти изображения содержатся.
private void attemptToFindQRCode(byte[] imageBytes) throws CameraAccessException {
Bitmap bitmapImage = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length, null);
FirebaseVisionImage visionImage = FirebaseVisionImage.fromBitmap(bitmapImage);
FirebaseVisionBarcodeDetector detector = setUpQRDetector();
Task<List<FirebaseVisionBarcode>> result = detector.detectInImage(visionImage)
.addOnSuccessListener(new OnSuccessListener<List<FirebaseVisionBarcode>>() {
@Override
public void onSuccess(List<FirebaseVisionBarcode> barcodes) {
processVisionBarcodeResult(barcodes);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@android.support.annotation.NonNull Exception e) {
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
Я подумал, что, возможно, это связано с тем, как я настроилДетектор штрих-кода, вот код для этого:
private FirebaseVisionBarcodeDetector setUpQRDetector(){
FirebaseApp.initializeApp(this);
FirebaseVisionBarcodeDetectorOptions options =
new FirebaseVisionBarcodeDetectorOptions.Builder()
.setBarcodeFormats(FirebaseVisionBarcode.FORMAT_QR_CODE)
.build();
return FirebaseVision.getInstance().getVisionBarcodeDetector(options);
}
Я пытался удалить параметры, чтобы детектор сканировал любой действительный штрих-код, но все равно ничего не нашел.
Любая помощь будет принята с благодарностью.