2017-05-14 126 views
0

我正在創建一個應用程序,用於拍照並通過http POST將它們發送到我的服務器。由於我只需要服務器端的灰度數據,因此只需拍攝灰度圖片而不必將其轉換即可。 我正在使用Camera2 API,並且在設置CaptureRequest.Builder實例的屬性時遇到問題。有了這個:用Android的相機拍攝灰度圖片2

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

它需要一張負面照片。 但是這個:

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

絕對沒有。沒有灰度。只是一個正常的圖片。

回答

0

您需要查看設備上的supported effects列表,以查看MONO是否實際上受其支持。

如果你只關心亮度,你可以捕獲YUV_420_888緩衝區而不是JPEG,並且只發送Y緩衝區到服務器。但是,這不會讓你自動進行JPEG編碼。

另請注意,一般情況下,JPEG圖像編碼爲YUV;因此,如果您深入瞭解JPEG解碼庫,則可能在轉換爲RGB之前獲取圖像數據,並忽略色度通道。