【发布时间】:2018-01-08 01:46:48
【问题描述】:
我正在尝试找出相机拍摄的照片的色温。
final CameraCaptureSession.CaptureCallback previewSSession = new CameraCaptureSession.CaptureCallback() {
@Override
public void onCaptureStarted(@NonNull CameraCaptureSession session, @NonNull CaptureRequest request, long timestamp, long frameNumber) {
super.onCaptureStarted(session, request, timestamp, frameNumber);
}
@Override
public void onCaptureCompleted(@NonNull CameraCaptureSession session, @NonNull CaptureRequest request, TotalCaptureResult result) {
super.onCaptureCompleted(session, request, result);
RggbChannelVector rggbChannelVector = result.get(CaptureResult.COLOR_CORRECTION_GAINS);
getColorTemperature(rggbChannelVector);
startCamera();
}
};
private void getColorTemperature(RggbChannelVector rggbChannelVector) {
//rggbChannelVector.getRed() = 2.192929
//rggbChannelVector.getGreenEven() = 1.0
//rggbChannelVector.getGreenOdd() = 1.0
//rggbChannelVector.getBlue() = 1.832323
}
iOS 似乎有一种现成的方法可以做到这一点temperatureAndTintValues
在搜索类似的东西时(在 Java 或我可以采用的任何其他语言中),几乎所有此类方法都期望具有 [0, 255] 范围的 RGB 值。
将 XYZ 转换为 CCT(相关色温)的方法很少,但即使要使 XYZ 值正确,我也需要 [0, 255] 中的 RGB 值
您可以看到COLOR_CORRECTION_GAINS 的值是>1,即大于 255,这并不罕见,因为它的增益和 iOS 返回相似的值(大于 1)。
【问题讨论】:
-
你检查了 Pallete Android 类吗? developer.android.com/training/material/palette-colors.html
-
@aaron0207 它仅用于从图像中提取突出颜色的类型。
-
是的,但是您也可以获得颜色配置文件(暗色、静音..),无论如何这里可能没有帮助
-
@Archie.bpgc stackoverflow.com/questions/24341114/…
标签: android colors android-camera android-camera2