【问题标题】:Taking grayscale picture with Android's camera2用安卓的相机拍摄灰度照片2
【发布时间】:2020-09-08 12:08:50
【问题描述】:

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

什么都不做。没有灰度。只是一张普通的照片。

【问题讨论】:

    标签: android grayscale android-camera2


    【解决方案1】:

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

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

    另请注意,通常在底层,JPEG 图像是用 YUV 编码的;因此,如果您深入研究 JPEG 解码器库,您可能能够在转换为 RGB 之前获取图像数据,而只需忽略色度通道。

    【讨论】:

      【解决方案2】:
      captureRequestBuilder.set(CaptureRequest.CONTROL_EFFECT_MODE,CameraMetadata.CONTROL_EFFECT_MODE_MONO);
      

      你可以用这个`

      【讨论】:

      • 欢迎来到 Stack Overflow。 Stack Overflow 上不鼓励仅使用代码的答案,因为它们没有解释它是如何解决问题的。请编辑您的答案以解释您在代码中所做的更改以及此更改如何解决问题,以便它对 OP 以及其他有类似问题的用户有用。
      猜你喜欢
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      相关资源
      最近更新 更多