【问题标题】:How to check whether given Camera is regular camera or wide angle camera?如何检查给定的相机是普通相机还是广角相机?
【发布时间】:2017-12-23 03:58:39
【问题描述】:

有没有办法检测给定的相机是普通相机还是广角相机?

对于 Oppo、Vivo、LG 等设备,他们使用 Camera2 API 提供对每个相机的访问权限。但是如何知道哪个相机是主相机,哪个相机是广角相机?

【问题讨论】:

    标签: android android-camera2


    【解决方案1】:

    您可以计算每个摄像头的视野,并确定它是否足够宽以进行计数。

    以度为单位的水平视野标准公式是:

    FOV = 2 * arctan(sensor_width / (2 * lens_focal_length) )
    

    对于垂直 FOV,使用传感器高度。

    通过 camera2 API,焦距在 AVAILABLE_FOCAL_LENGTHS 中列出,传感器物理尺寸在 PHYSICAL_SIZE 中列出。

    如果您想完全准确,您还应该考虑active array,它是physical pixel array 的子集,实际用于生成图像。但这通常只是数千像素中的几行。但如果你想考虑到它,你会想要这样的东西:

    active_width = sensor_width * active_array_width / pixel_array_width
    

    计算FOV。此外,有时报告的 FOV 是对角线,在这种情况下,您想要的传感器尺寸是

    sensor_diagonal = sqrt(sensor_width^2 + sensor_height^2)
    

    对于广角相机没有单一的定义,特别是因为大多数移动设备相机已经在 65-75 度 FOV 范围内。

    三星 S8 前置摄像头的 FOV 为 80 度,三星称其为“广角自拍”,而后置摄像头的 FOV 为 77 度。但不确定这些是水平视野还是对角视野。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 2022-08-02
      • 2012-11-21
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多