Я работаю над простым сканером штрих-кода, используя сканер штрих-кодов Google MLkit и API cameraX. Но ограничивающие рамки неправильно отображают штрих-коды. Я пробовал много вещей, таких как преобразование координат и т. д., но не помогло:
Изображения прилагаются.
[img]https: //i.sstatic.net/LhZvcaNd.jpg[/img]
Я работаю над простым сканером штрих-кода, используя сканер штрих-кодов Google MLkit и API cameraX. Но ограничивающие рамки неправильно отображают штрих-коды. Я пробовал много вещей, таких как преобразование координат и т. д., но не помогло: Изображения прилагаются. [img]https: //i.sstatic.net/LhZvcaNd.jpg[/img]
Код: BarcodeScannerActivity [code]public class BarcodeScannerActivity extends AppCompatActivity {
private static final int REQUEST_CAMERA_PERMISSION = 1001; private ExecutorService cameraExecutor; private static final String TAG = "BarcodeScannerActivity";
private int currentOrientation = 0; // 0: portrait, 1: landscape
// Camera selector for the back camera CameraSelector cameraSelector = new CameraSelector.Builder() .requireLensFacing(CameraSelector.LENS_FACING_BACK) .build();
// Preview use case Preview preview = new Preview.Builder().build(); preview.setSurfaceProvider(previewView.getSurfaceProvider());
// Image analysis use case ImageAnalysis imageAnalysis = new ImageAnalysis.Builder() .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) .build();
BarcodeScannerOptions options = new BarcodeScannerOptions.Builder() .setBarcodeFormats(Barcode.FORMAT_ALL_FORMATS) .build();
scanner.process(image) .addOnSuccessListener(barcodes -> { if (!barcodes.isEmpty()) { // Map all barcode bounding boxes to the view coordinates List mappedBoundingBoxes = new ArrayList(); for (com.google.mlkit.vision.barcode.common.Barcode barcode : barcodes) { Rect boundingBox = barcode.getBoundingBox(); if (boundingBox != null) { Rect rect = mapBoundingBoxToView(boundingBox, imageProxy); mappedBoundingBoxes.add(rect); } }
// Update the overlay with all mapped bounding boxes barcodeOverlay.updateBarcodes(mappedBoundingBoxes); } }) .addOnFailureListener(e -> Log.e(TAG, "Barcode detection failed.", e)) .addOnCompleteListener(task -> imageProxy.close()); }
public Rect mapBoundingBoxToView(Rect boundingBox, ImageProxy imageProxy) {
int imageWidth = imageProxy.getWidth(); int imageHeight = imageProxy.getHeight();
int viewWidth = previewView.getWidth(); int viewHeight = previewView.getHeight();
public void updateBarcodes(List newBarcodeRects) { barcodeRects = newBarcodeRects; invalidate(); // Trigger a redraw }
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); for (Rect rect : barcodeRects) { canvas.drawRect(rect, paint); } } } [/code] [code]
[/code] Пожалуйста, помогите! Я хочу отсканировать штрих-код и нарисовать ограничивающие рамки, но прямоугольники не отображаются на штрих-коде правильно.>
Я работаю над простым сканером штрих-кода, используя сканер штрих-кодов Google MLkit и API cameraX. Но ограничивающие рамки неправильно отображают штрих-коды. Я пробовал много вещей, таких как преобразование координат и т. д., но не помогло:...
Я работаю над простым сканером штрих-кода, используя сканер штрих-кодов Google MLkit и API cameraX. Но ограничивающие рамки неправильно отображают штрих-коды. Я пробовал много вещей, таких как преобразование координат и т. д., но не помогло:...
Я работаю над простым сканером штрих-кода, используя сканер штрих-кодов Google MLkit и API cameraX. Но ограничивающие рамки неправильно отображают штрих-коды. Я пробовал много вещей, таких как преобразование координат и т. д., но не помогло:...
Я работаю над простым сканером штрих-кода, используя сканер штрих-кодов Google MLkit и API cameraX. Но ограничивающие рамки неправильно отображают штрих-коды. Я пробовал много вещей, таких как преобразование координат и т. д., но не помогло:...
Я работаю над простым сканером штрих-кода, используя сканер штрих-кодов Google MLkit и API cameraX. Но ограничивающие рамки неправильно отображают штрих-коды. Я пробовал много вещей, таких как преобразование координат и т. д., но не помогло:...