es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Limitar el área de detección de MLKIT del escáner de códigos de barras.

Estoy implementando un escáner de códigos de barras utilizando MLKIT en mi aplicación (Kotlin). Necesito que el código de barras sea procesado solo cuando esté visible en un rectángulo transparente en el centro de la pantalla, como se muestra en la imagen a continuación.

PIC 1

En este momento, mi aplicación detecta todos los códigos de barras visibles en la vista de la cámara, como se muestra a continuación. ¿Es posible limitar el área de detección para que la detección solo lea desde un rectángulo en el centro de la pantalla?

Además, me gustaría crear una vista previa personalizada para un código de barras con cameraX, como se muestra en PIC 1. Gracias.

PIC 2

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para limitar el área de detección del escáner de códigos de barras en MLKIT utilizando Kotlin, puedes crear una superposición de rectángulo transparente en la parte superior de la vista previa de la cámara. Puedes hacer esto creando un PreviewView personalizado para el código de barras con CameraX y agregando la superposición de rectángulo encima.

    Para lograr esto, puedes crear un archivo de diseño XML con un FrameLayout como vista raíz. Dentro del FrameLayout, agrega un PreviewView personalizado y una superposición de rectángulo transparente con las dimensiones y posición deseadas en el centro de la pantalla.

    En tu actividad o fragmento, luego puedes inflar el diseño y vincular el PreviewView a la implementación de CameraX. Luego puedes usar el cuadro delimitador proporcionado por la detección de códigos de barras de MLKIT para verificar si el código de barras está dentro de los límites de la superposición de rectángulo.

    Si el código de barras está dentro de los límites, puedes procesarlo según corresponda, de lo contrario, ignóralo. Esto limitará el área de detección del escáner de códigos de barras a la superposición de rectángulo transparente, como se muestra en la imagen 1.

    Ten en cuenta que también puedes ajustar el tamaño y la posición de la superposición de rectángulo para adaptarse a tu caso de uso específico.

    <framelayout android:id="@+id/camera_frame" android:layout_width="match_parent" android:layout_height="match_parent">
    
        <!-- PreviewView personalizado para el escáner de códigos de barras con implementación de CameraX -->
        <com.example.barcode.custompreviewview android:id="@+id/preview_view" android:layout_width="match_parent" android:layout_height="match_parent"></com.example.barcode.custompreviewview>
    
        <!-- Superposición de rectángulo transparente -->
        <view android:id="@+id/transparent_rect" android:layout_width="200dp" android:layout_height="200dp" android:layout_gravity="center" android:background="@android:color/transparent" android:outlineambientshadowcolor="@android:color/holo_red_dark" android:outlinespotshadowcolor="@android:color/holo_blue_dark" android:elevation="10dp"></view>
    
    </framelayout>
    

Comments are closed.