我正在创建一个用于拍照并通过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);


什么也没做。没有灰度。只是正常情况。

最佳答案

您需要查看设备上的supported effects列表,以查看MONO是否真正支持它。

如果只关心亮度,则可以只捕获YUV_420_888缓冲区而不是JPEG,并且仅将Y缓冲区发送到服务器。但是,那不会使您自动进行JPEG编码。

还要注意,一般来说,JPEG图像是用YUV编码的;因此,如果您深入研究JPEG解码器库,则可以在转换为RGB之前获取图像数据,而只需忽略色度通道。

10-07 17:09