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.
- Despedir Progress Dialog
- ¿Cómo puedo mantener mi aplicación en segundo plano?
- ¿Cómo conseguir la localización de los gps una vez para el androide de 5 minutos?
- ¿Necesita un ejemplo de código sobre cómo ejecutar un servicio Android para siempre en segundo plano incluso cuando el dispositivo está durmiendo, como Whatsapp?
- Notificación de Android en segundo plano si la aplicación se cerró?
¿Cómo puedo obtener imágenes de la cámara en segundo plano sin mostrar la entrada de la cámara?
- La aplicación Phonegap muere en segundo plano mientras recoge la ubicación
- Obtener la lista de procesos en ejecución y eliminar sus servicios de fondo
- UML: Cómo modelar la interfaz de usuario y los hilos de fondo para aplicaciones móviles (iPhone / iOS, Android)
- En Android, ¿cuál es la diferencia entre los procesos en ejecución y los procesos de fondo en caché?
- ¿Qué sucede con un AsyncTask cuando la actividad de lanzamiento se detiene / destruye mientras todavía se está ejecutando?
- La mejor manera de enviar solicitudes HTTP GET ansynchronously en Android?
- Up-Sync y Down-Sync en Android?
- Sigue ejecutando una aplicación después de que la pantalla se bloquee automáticamente - Phonegap (Android / iOS)
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ó.