OpenCV Android: Obtener fotogramas de la cámara en segundo plano sin mostrar en la pantalla

He escrito una aplicación de detección de flujo óptico que basado en OpenCV para Android tutoriales y código fuente de la aplicación OpenCV Demo 2 de Barry Thomas. Ahora quiero hacer de esta aplicación una tarea de fondo para poder pasar el resultado de la detección a mi actividad principal a través de la interfaz de escucha.

Todas las muestras de aplicación en OpenCV totorials extiende Activity e implementa CvCameraViewListener y muestra la entrada de la cámara en el scrren. Quiero capaz de capturar fotogramas de cámara y hacer la detección de flujo óptico en los marcos de fondo sin mostrarlos en la pantalla.

¿Cómo puedo obtener imágenes de la cámara en segundo plano sin mostrar la entrada de la cámara?

Hay dos maneras, pero usted tiene que mantener un Mat en la memoria en el método onCameraFrame:

 @Override public Mat onCameraFrame(CvCameraViewFrame inputFrame) { mRgba = inputFrame.rgba(); return mRgba; } 

1) hacer el cameraview invisible 2) hacer onCameraFrame vuelta null

Ambas maneras usted debe hacer su trabajo adicional en otra opinión.

La única manera que encontré para obtener los fotogramas de la cámara en el fondo es mediante el uso de SurfaceTexture lugar de una SurfaceView , y por lo tanto, establecerlo con Camera.setPreviewTexture lugar de Camera.setPreviewDisplay .

Esta respuesta, así como esta ayudó.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.