2015-01-14 5 views

ответ

0

Существует два способа контроля баланса белого и экспозиции, прямое управление контрастом недоступно до тех пор, пока вы не используете сторонние библиотеки. Наиболее Признанный OPENCV for Android

Вот два способа, которые могут быть переданы в качестве параметров камеры

setWhiteBalance() or setExposureCompensation() 
1

Наряду с компенсацией экспозиции и баланса белого вы можете установить контраст сам параметр. Проверьте параметр «контрастность» в параметрах камеры с плоской матрицей и на основе этого вы можете принять решение. Ниже приведен один из таких примеров,

Camera.Parameters camParams = mCamera.getParameters(); 
    String parmListStr = camParams.flatten(); 
    String[] parms = parmListStr.split(";"); 
    int maxContrast = 0, curContrast = 0, newContrast = 0; 
    for(String str:parms){ 
     if(str.contains("max-contrast=")){ 
      String[] values = str.split("="); 
      maxContrast = Integer.getInteger(values[1]); 
     } else if (str.contains("contrast=")){ 
      String[] values = str.split("="); 
      curContrast = Integer.getInteger(values[1]); 
     } 
    } 

    if (maxContrast > 0 && curContrast >= 0){ 
     //calculate contrast as per your needs and set it to camera parameters as below 
     newContrast = (curContrast + 1) < maxContrast? (curContrast + 1): maxContrast; 
     camParams.set("contrast", newContrast); 
     mCamera.setParameters(camParams); 
    } 

В приведенном выше примере «контраст» и «Макс-контраст» являются ключами параметров камеры (от nexus4). Они не являются стандартными и могут меняться с одного устройства на другое. Но согласно моему наблюдению, это общие ключи, используемые всеми производителями. Возможно, вы можете сделать больше исследований о разных устройствах, чтобы завершить полный набор ключей и написать на основе логики.

Смежные вопросы