【问题标题】:How should I set exposure and white balance values for custom camera我应该如何为自定义相机设置曝光和白平衡值
【发布时间】:2014-02-10 15:12:00
【问题描述】:

如果我在Android自定义相机中初始化相机参数时不设置曝光和白平衡会发生什么情况。相机是自己处理这些,还是我需要在相机初始化时指定值?

过去我在使用闪光灯时遇到过问题,将曝光和白平衡设置为特定值可以帮助我克服这些问题。我没有任何计划让用户手动修改曝光和/或白平衡设置.

我设置了以下代码:

if(isSupported(Camera.Parameters.SCENE_MODE_AUTO, mParameters.getSupportedSceneModes()))
    {
        mSceneMode=Camera.Parameters.SCENE_MODE_AUTO;
        mParameters.setSceneMode(mSceneMode);
    }

    int min=mParameters.getMinExposureCompensation();
    int max=mParameters.getMaxExposureCompensation();
    float step=mParameters.getExposureCompensationStep();
    //do i need to setExposureCompensation here??
    if(mSceneMode==Camera.Parameters.SCENE_MODE_AUTO && isSupported(Camera.Parameters.FLASH_MODE_AUTO,mParameters.getSupportedFlashModes()))
    {
            //ususally when I let the flash fire,the image is filled with light
            //all that does is make everything else undecipherable...  
        mFlashMode=Camera.Parameters.FLASH_MODE_AUTO;
        mParameters.setFlashMode(mFlashMode);
    }

        if(isSupported(Camera.Parameters.WHITE_BALANCE_AUTO,mParameters.getSupportedWhiteBalance()))
    {
        mWhiteBalanceMode=Camera.Parameters.WHITE_BALANCE_AUTO;
        mParameters.setWhiteBalance(mWhiteBalanceMode);
    }

我了解到,当应用 autoExposureLock 和 autoWhiteBalanceLock 时,自动曝光和自动白平衡更新周期会停止。为什么以及如何在我的相机代码中使用这些锁定?

【问题讨论】:

    标签: android camera android-camera


    【解决方案1】:

    根据我自己的开发,曝光和白平衡默认设置为“自动”:自动曝光和“自动白平衡”。

    您可以通过以下方式检查支持的模式:

    mCameraParameters = mCamera.getParameters();
    Log.i(TAG, "Supported Exposure Modes:" + mCameraParameters.get("exposure-mode-values"));    
    Log.i(TAG, "Supported White Balance Modes:" + mCameraParameters.get("whitebalance-values"));
    

    并检查当前模式:

    Log.i(TAG, "Exposure setting = " + mCameraParameters.get("exposure")); 
    Log.i(TAG, "White Balance setting = " + mCameraParameters.get("whitebalance")); 
    

    如果你想使用其他模式,你可以这样设置:

    mCameraParameters.set("exposure", "night");
    mCamera.setParameters(mCameraParameters);
    

    【讨论】:

    • 不要使用除了常量或方法之外的任何东西:camera_parameters.getWhiteBalance()
    • @JoelTeply 祝您以这种方式设置 ISO 或其他几个参数。为方便起见,Camera.Parameters API 中只有一部分可设置的相机参数具有 getter/setter 方法。这正是提供通用get()set() 方法的原因。只要您从支持的值列表中选择您的设置,上述方法就可以了。我不明白为什么杰克的回答被否决了。
    • 你是对的。我们以这种方式设置特定的制造商设置,这些设置并不公开,但我仍然更喜欢尽可能使用常量,否则会出现错别字
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多