Как установить значение Camera2'AWB? - PullRequest
0 голосов
/ 28 ноября 2018

Я получил значение от SeekBar(1-100), диапазон цветовой температуры и (2500K -7500K), я пытаюсь установить значение AWB для Camera2 ... Даже если я изменяю значение, но мой предварительный просмотр всегдазеленый.

Это мой код:

//-------
      mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_OFF);
      mPreviewRequestBuilder.set(CaptureRequest.COLOR_CORRECTION_MODE, CaptureRequest.COLOR_CORRECTION_MODE_TRANSFORM_MATRIX);
      RggbChannelVector rggbChannelVector = MyRGGB.colorTemperature(progress);
      //mPreviewRequestBuilder.set(CaptureRequest.COLOR_CORRECTION_GAINS, rggbChannelVector);

MyGGB.class

public static RggbChannelVector colorTemperature(int progress) {
float temperature = progress / 100;
float red;
float green;
float blue;
//Calculate red
if (temperature <= 66)
  red = 255;
else {
  red = temperature - 60;
  red = (float) (329.698727446 * (Math.pow((double) red, -0.1332047592)));
  if (red < 0)
    red = 0;
  if (red > 255)
    red = 255;
}


//Calculate green
if (temperature <= 66) {
  green = temperature;
  green = (float) (99.4708025861 * Math.log(green) - 161.1195681661);
  if (green < 0)
    green = 0;
  if (green > 255)
    green = 255;
} else {
  green = temperature - 60;
  green = (float) (288.1221695283 * (Math.pow((double) green, -0.0755148492)));
  if (green < 0)
    green = 0;
  if (green > 255)
    green = 255;
}

//calculate blue
if (temperature >= 66)
  blue = 255;
else if (temperature <= 19)
  blue = 0;
else {
  blue = temperature - 10;
  blue = (float) (138.5177312231 * Math.log(blue) - 305.0447927307);
  if (blue < 0)
    blue = 0;
  if (blue > 255)
    blue = 255;
}

Log.e("RGB", "red=" + red + ", green=" + green + ", blue=" + blue);
return new RggbChannelVector((red / 255) * 2, (green / 255), (green / 255), (blue / 255) * 2);

} Я прочитал вопрос Camera2 APIУстановите пользовательский баланс белого и цвет температуры , но void MyRGGB.colorTemperature() всегда возвращает red=255.0, green=0.0, blue=0.0, я не знаю, как решить эту проблему ...

...