2017-05-14 3 views
0

Ich erstelle eine App zum Aufnehmen von Bildern und Senden von ihnen über http POST zu meinem Server. Da ich auf der Serverseite nur Graustufendaten benötige, wäre es viel besser, einfach das Graustufenbild aufzunehmen und es nicht konvertieren zu müssen. Ich verwende Camera2 API und ich habe ein Problem mit der Einstellung Eigenschaften für CaptureRequest.Builder Instanz. Mit diesem:Nehmen Graustufen-Bild mit Android-Kamera2

final CaptureRequest.Builder captureBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE); 
captureBuilder.set(CaptureRequest.CONTROL_EFFECT_MODE, CaptureRequest.CONTROL_EFFECT_MODE_NEGATIVE); 

Es dauert ein negatives Foto. Aber das:

final CaptureRequest.Builder captureBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE); 
captureBuilder.set(CaptureRequest.CONTROL_EFFECT_MODE, CaptureRequest.CONTROL_EFFECT_MODE_MONO); 

Tut absolut nichts. Keine Graustufen. nur ein normales Bild.

Antwort

0

Sie müssen sich die Liste der supported effects auf Ihrem Gerät ansehen, um zu sehen, ob MONO tatsächlich von ihm unterstützt wird.

Wenn Sie nur für die Luminanz interessiert sind, können Sie nur YUV_420_888 Puffer anstelle von JPEG erfassen und nur den Y-Puffer an den Server senden. Das wird Ihnen jedoch keine automatische JPEG-Kodierung bringen.

Beachten Sie auch, dass JPEG-Bilder im Allgemeinen unter der Haube in YUV codiert sind; Wenn Sie also in Ihre JPEG-Decoder-Bibliothek eintauchen, können Sie möglicherweise die Bilddaten vor der Konvertierung in RGB abrufen und die Chroma-Kanäle einfach ignorieren.

Verwandte Themen