在相机预览中更改对比度 - Android
Change contrast in Camera Preview - Android
可以在 Android 中更改相机预览中的对比度吗?我一直在寻找如何做到这一点,但我只看到如何改变图像的对比度。
有两种控制白平衡和曝光的方法,除非使用第三方库,否则无法直接控制对比度。最受认可的是OPENCV for Android
这里有两个方法,可以作为相机参数传入
setWhiteBalance() or setExposureCompensation()
除了曝光补偿和白平衡,您实际上还可以设置 对比度 参数本身。检查相机参数扁平化数组中的参数 "contrast" 支持,然后您可以根据此做出决定。下面是一个这样的例子,
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);
}
在上面的例子中"contrast"和"max-contrast"是相机参数键(来自nexus4)。这些不是标准的,它们可能会从一台设备更改为另一台设备。但根据我的观察,这些是所有制造商使用的通用密钥。也许您可以对不同的设备进行更多研究,以最终确定完整的密钥集并基于此编写逻辑。
可以在 Android 中更改相机预览中的对比度吗?我一直在寻找如何做到这一点,但我只看到如何改变图像的对比度。
有两种控制白平衡和曝光的方法,除非使用第三方库,否则无法直接控制对比度。最受认可的是OPENCV for Android
这里有两个方法,可以作为相机参数传入
setWhiteBalance() or setExposureCompensation()
除了曝光补偿和白平衡,您实际上还可以设置 对比度 参数本身。检查相机参数扁平化数组中的参数 "contrast" 支持,然后您可以根据此做出决定。下面是一个这样的例子,
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);
}
在上面的例子中"contrast"和"max-contrast"是相机参数键(来自nexus4)。这些不是标准的,它们可能会从一台设备更改为另一台设备。但根据我的观察,这些是所有制造商使用的通用密钥。也许您可以对不同的设备进行更多研究,以最终确定完整的密钥集并基于此编写逻辑。