在相机预览中更改对比度 - 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)。这些不是标准的,它们可能会从一台设备更改为另一台设备。但根据我的观察,这些是所有制造商使用的通用密钥。也许您可以对不同的设备进行更多研究,以最终确定完整的密钥集并基于此编写逻辑。