我正在创建一个用于拍照并通过 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 之前获取图像数据,并简单地忽略色度 channel 。
关于android - 使用Android的相机拍摄灰度照片2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43964431/