如何检查相机是普通相机还是广角相机?

时间:2017-12-21 16:52:03

标签: android android-camera2

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

借助Oppo,Vivo,LG等设备,他们可以使用Camera2 API访问每个摄像头。但是如何知道哪个摄像头是主摄像头,哪个摄像头是广角摄像头?

1 个答案:

答案 0 :(得分:2)

您可以计算每个摄像机的视野,并确定它是否足够宽以便计算。

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

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前置摄像头的视角为80度,三星称其为“自拍”,后置摄像头的视角为77度。但不确定这些是水平或对角FOV。