【问题标题】:How to get Camera Sensor Size in android device?如何在 Android 设备中获取相机传感器尺寸?
【发布时间】:2011-12-27 14:28:13
【问题描述】:

谁能知道如何在安卓设备中获取相机的传感器尺寸?

谢谢

【问题讨论】:

    标签: android camera android-camera


    【解决方案1】:

    从 API 级别 21 开始就有可能。来自文档 (https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#SENSOR_INFO_PHYSICAL_SIZE):

    public static final Key SENSOR_INFO_PHYSICAL_SIZE

    全像素阵列的物理尺寸。 [...]

    单位:毫米

    我使用这种代码。请注意,可能不止一个摄像头:

    import android.hardware.camera2.CameraAccessException;
    import android.hardware.camera2.CameraCharacteristics;
    import android.hardware.camera2.CameraManager;
    
    private SizeF getCameraResolution(int camNum)
    {
        SizeF size = new SizeF(0,0);
        CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
        try {
            String[] cameraIds = manager.getCameraIdList();
            if (cameraIds.length > camNum) {
                CameraCharacteristics character = manager.getCameraCharacteristics(cameraIds[camNum]);
                size = character.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE);
            }
        }
        catch (CameraAccessException e)
        {
            Log.e("YourLogString", e.getMessage(), e);
        }
        return size;
    }
    

    请注意,需要捕获异常CameraAccessException

    不要忘记将<uses-sdk android:minSdkVersion="21" /> 添加到您的清单中。

    【讨论】:

    • 完美的解决方案,但是,如何在21 API之前的版本中获得相同的值?
    • 这个方法也是写吗? stackoverflow.com/a/41032402/4548520
    • 似乎在某些设备上无法正常工作。使用此传感器信息大小进行计算时,我得到的相机角度不正确。仅对于某些设备,我在使用 Camera2 API 和 Camera Legacy API 时得到相同的结果
    【解决方案2】:

    使用 Camera1 Api 也很容易获得相机传感器的宽度和高度。获取水平和垂直视角和焦距,剩下的就是小三角函数。

    Camera.Parameters params = mCamera.getParameters();
    focalLength = params.getFocalLength();
    horizontalViewAngle = params.getHorizontalViewAngle();
    verticalViewAngle = params.getVerticalViewAngle();
    

    A = 视角,l = 焦距,h = 传感器高度/2 => tan(A/2) = h/l

    对于我的焦距为 1.15 毫米、水平视角为 54.8 度的设备:

    传感器宽度 = tan(54.8/2)*2*1.15 = 1.19mm

    这个值与我使用 DomTomCat 发布的方法得到的值相同。

    【讨论】:

      猜你喜欢
      • 2012-05-04
      • 1970-01-01
      • 2020-04-11
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      相关资源
      最近更新 更多