2014-10-27 10 views
5

Sto cercando di ottenere un frame zoom digitale su Android 5.0 con interfaccia camera2. doc appropriata per tale funzionalità è developer.android.com/camera2/captureRequestAndroid 5.0 Regioni di ritaglio errate sulla superficie di anteprima e fermo immagine

superficie usato nella mia domanda:

  • SurafaceView (1920x1080, 16: 9 aspect ratio)
  • ImageReader (3264x2448, 4: 3 aspect ratio)

La dimensione del sensore della fotocamera è 3280x2464 (proporzioni 4: 3)

Area di coltura che desidero ottenere dal sensore è:

Rect zoomCropPreview = new Rect(1094, 822, 2186, 1642); //(1092x820, 4:3 aspect ratio) 

ho impostato questo Rect come parametro per la richiesta di anteprima:

previewRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, zoomCropPreview); 
captureSession.setRepeatingRequest(previewRequestBuilder.build(), null, null); 

E per scattare immagini:

stillRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, zoomCropPreview); 

captureSession.capture(stillRequestBuilder.build(), new captureListener() , null); 

Risultati attesi:

  • Il rettangolo di ritaglio di Coz ha un rapporto di 4: 3, quindi l'anteprima dovrebbe essere ritagliata ped vertically (letterbox)
  • L'immagine fissa deve essere la regione di ritaglio esatta.
  • Sia l'anteprima che l'immagine fissa devono essere centrate sullo stesso punto della scena e dovrebbero differire solo per i bordi verticali.

risultato reale:

  • anteprima e immagini fisse punto sul diversa scena che sembra essere spostato in senso verticale. Guarda le immagini allegate. Preview surface

Captured still image

Che cosa sto facendo di sbagliato?

+0

Qual è il livello hardware del dispositivo (https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#INFO_SUPPORTED_HARDWARE_LEVEL)? Se LEGACY, potresti incontrare un bug del sistema operativo risolto nelle versioni successive di Android. –

risposta

2

Riparato! L'idea generale consiste nel calcolare separatamente la regione di ritaglio per l'anteprima e le immagini fisse.

1) Calcolare regione di taglio per le immagini statiche come post iniziale (uso 4: 3 rettangolo)

2) Per anteprima prendere sopra regione di taglio (4: 3) e ridurre la dimensione verticale per ottenere 16: 9 rettangolo .

+1

si prega di spiegare in dettaglio. Sto affrontando lo stesso problema. SurafaceView (proporzioni 1024x608, 1,68) ImageReader (1024x608, proporzioni 1,68) La dimensione del sensore della videocamera è 4096 * 2432 (proporzioni 1,68) – DreamCoder

Problemi correlati