使用Android的camera2拍摄灰度图片

时间:2017-05-14 13:28:44

标签: android grayscale android-camera2

我正在创建一个用于拍照并通过http POST发送到我的服务器的应用程序。由于我只需要在服务器端使用灰度数据,因此只需采用灰度图片而不必转换就可以了。 我正在使用Camera2 API,我在设置CaptureRequest.Builder实例的属性方面遇到了问题。有了这个:

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);

绝对没有。没有灰度。只是一张正常的照片。

2 个答案:

答案 0 :(得分:1)

captureRequestBuilder.set(CaptureRequest.CONTROL_EFFECT_MODE,CameraMetadata.CONTROL_EFFECT_MODE_MONO);

您可以使用此`

答案 1 :(得分:0)

您需要查看设备上的supported effects列表,了解MONO是否真正受其支持。

如果你只关心亮度,你可以只捕获YUV_420_888缓冲区而不是JPEG,并且只将Y缓冲区发送到服务器。但是,这不会让你获得自动JPEG编码。

另请注意,通常在引擎盖下,JPEG图像以YUV编码;因此,如果您深入了解JPEG解码器库,您可以在转换为RGB之前获取图像数据,并简单地忽略色度通道。