Esiste un equivalente per Camera.PreviewCallback in Camera2 dell'API 21, meglio della mappatura su SurfaceTexture e l'estrazione di una Bitmap? Devo essere in grado di estrarre i dati di anteprima dalla fotocamera come YUV?Camera.PreviewCallback equivalente in Camera2 API
risposta
È possibile iniziare dal codice di esempio Camera2Basic da Google.
È necessario aggiungere la superficie del ImageReader
come un obiettivo alla richiesta di anteprima di cattura:
//set up a CaptureRequest.Builder with the output Surface
mPreviewRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
mPreviewRequestBuilder.addTarget(surface);
mPreviewRequestBuilder.addTarget(mImageReader.getSurface());
Dopo di che, è possibile recuperare l'immagine nel ImageReader.OnImageAvailableListener
:
private final ImageReader.OnImageAvailableListener mOnImageAvailableListener = new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
Image image = null;
try {
image = reader.acquireLatestImage();
if (image != null) {
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
Bitmap bitmap = fromByteBuffer(buffer);
image.close();
}
} catch (Exception e) {
Log.w(LOG_TAG, e.getMessage());
}
}
};
Per ottenere un Bitmap
dal ByteBuffer
:
Bitmap fromByteBuffer(ByteBuffer buffer) {
byte[] bytes = new byte[buffer.capacity()];
buffer.get(bytes, 0, bytes.length);
return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
Sì, utilizzare la classe ImageReader.
Creare un ImageReader utilizzando il formato ImageFormat.YUV_420_888 e le dimensioni desiderate (assicurarsi di selezionare una dimensione supportata dal dispositivo della fotocamera che si sta utilizzando).
Quindi utilizzare ImageReader.getSurface() per Surface per fornire a CameraDevice.createCaptureSession(), se presenti, eventuali altri output di anteprima.
Infine, nella richiesta di acquisizione ricorrente, aggiungi la superficie fornita da ImageReader come destinazione prima di impostarla come richiesta ripetuta nella sessione di cattura.
@ Eddy Tal vala, quando aggiungo il target come mPreviewRequestBuilder.addTarget (mImageReader.getSurface()); Congela le superfici. – user1154390
Quale errore si ottiene nel logcat? E hai aggiunto la superficie alla tua chiamata a createCaptureSession? –
Sì, impostare entrambe le superfici per l'output in createCaptureSession. Logcat non mostra alcun errore. Si blocca in avanti ma rimane bloccato negli ultimi due giorni. – user1154390
- 1. Converti Android camera2 api YUV_420_888 in RGB
- 2. Camera2 API AutoFocus con Samsung S5
- 3. Come ottenere un frame di anteprima singolo in Camera2 API Android 5.0?
- 4. camera2 api converti yuv420 in rgb green out
- 5. Android Camera2 Dimensioni output
- 6. android camera2 maniglia zoom
- 7. Le immagini con Camera2 API sono molto scure
- 8. Fotocamera anteriore in Camera2 non cattura immagine
- 9. Equivalente di getBoundsZoomLevel() in gmaps api 3
- 10. Registrazione video Camera2
- 11. Android Camera2 getPreviewFrame
- 12. riconoscimento fronte camera2 Android
- 13. L'orientamento dell'anteprima in modalità orizzontale viene ruotato in senso orario con Camera2 api
- 14. Passaggio a Camera2 nell'API Android Vision
- 15. Messa a fuoco manuale in camera2, android
- 16. Come controllare iso manualmente in camera2, android
- 17. Android SDK - camera2 - Disegna rettangolo su TextureView
- 18. Google Maps Indicazioni API Equivalente URL
- 19. YUV_420_888 interpretazione sul Samsung Galaxy S7 (Camera2)
- 20. Camera2 API onCaptureComplete() viene chiamato ma lo stato della videocamera è ancora CONTROL_AE_STATE_PRECAPTURE
- 21. Equivalente all'intervallo jodatime in Java 8 API Data e ora
- 22. Equivalente di [Bind (Prefix = "principalId")] in MVC4 Web Api?
- 23. Android: come posso verificare se un dispositivo ha implementato o meno le funzionalità di Camera2 api?
- 24. IAuthenticationFilter equivalente in MVC
- 25. CURL equivalente in VBA?
- 26. Esiste un equivalente API Web ASP.NET nel mondo JAVA?
- 27. equivalente in cURL in Swift - iOS
- 28. CameraDevice che non riesce a creare la sessione [Camera2]
- 29. Implementa Tocca per mettere a fuoco nell'API Camera2
- 30. Curl -u equivalente in richiesta HTTP
congela la vista Textur. (MPreviewRequestBuilder.addTarget (mImageReader.getSurface());) – user1154390