2014-05-19 8 views
6

Ho scritto un'applicazione di rilevamento del flusso ottico basata su OpenCV per esercitazioni Android e codice sorgente dell'applicazione Barry Thomas OpenCV Demo 2. Ora voglio rendere questa applicazione un'attività di background in modo da poter passare il risultato del rilevamento alla mia attività principale tramite l'interfaccia listener.OpenCV Android: acquisizione di cornici senza sfondo sullo schermo

Tutti i campioni di applicazione nei totem OpenCV si estendono Activity e implementa CvCameraViewListener e mostra l'ingresso della telecamera sullo schermo. Voglio poter acquisire i frame delle telecamere e fare il rilevamento del flusso ottico sui frame in background senza mostrarli sullo schermo.

Come posso ottenere fotogrammi dalla fotocamera in background senza mostrare l'input della telecamera?

risposta

0

Ci sono due modi, ma si deve tenere un tappetino in memoria nel metodo onCameraFrame:

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

1) rendere il cameraview invisibile 2) rendere onCameraFrame restituire null

Entrambi i modi dovresti svolgere il tuo lavoro aggiuntivo in un'altra vista.

+3

Rendere invisibile l'inquadratura impedisce qualsiasi elaborazione che avvenga per fotogramma .. o almeno questo è ciò che accade nel mio caso –

+0

Rendere invisibile arresta qualsiasi elaborazione. Restituzione di risultati nulli in una schermata nera. – japedo

0

L'unico modo che ho trovato per ottenere fotogrammi della telecamera in background è quello di utilizzare un SurfaceTexture al posto di un SurfaceView, e quindi impostare utilizzando Camera.setPreviewTexture invece di Camera.setPreviewDisplay.

This risposta e this one aiutato.

+1

Stai parlando della libreria di Android Camera, mentre la domanda riguarda la libreria di OpenCV, che utilizza 'org.opencv.android.CameraBridgeViewBase' –