¿Cuál es la diferencia entre `opencv.android.JavaCameraView` y` opencv.android.NativeCameraView`

Exactamente como se indica en el tema: ¿Cuál es la diferencia entre opencv.android.JavaCameraView y opencv.android.NativeCameraView . ¿Cuáles son las ventajas una sobre la otra, las principales, que da más opciones?

De la documentación de OpenCV :

La clase org.opencv.android.JavaCameraView se implementa dentro de la biblioteca OpenCV. Se hereda de CameraBridgeViewBase , que extiende SurfaceView y utiliza la API estándar de la cámara de Android. Alternativamente, puede usar la clase org.opencv.android.NativeCameraView , que implementa la misma interfaz, pero usa la clase VideoCapture como acceso a la cámara. opencv:show_fps="true" y opencv:camera_id="any" options habilita el mensaje FPS y permite usar cualquier cámara en el dispositivo. La aplicación intenta usar la cámara trasera primero.

La implementación de la interfaz CvCameraViewListener permite agregar pasos de procesamiento después de capturar fotogtwigs de la cámara y antes de su renderizado en la pantalla. La función más importante es onCameraFrame . Es una función de callback y se invoca para recuperar el fotogtwig de la cámara. La entrada de callback es un objeto de la clase CvCameraViewFrame que representa el fotogtwig de la cámara.

Acabo de tomar esta respuesta de aquí (que es una respuesta un poco vieja) y agregué lo que experimenté:

cámara nativa:

  • (+1) mayor velocidad de fotogtwigs

  • (+1) capture RGBA, no es necesario convertir el formato de anduid de Android.

  • “comstackdo solo para la architecture armv7” ya no es cierto.
  • (-1) no funciona en todos los dispositivos -> ¡Confirmo! ¡Es por eso que no lo uso! ver error 2359 .
  • (-1) no es compatible con el enfoque automático, ajuste de ganancia … (contestado en 2012)

¡Espero que esto pueda ser útil!