有人能解释一下LENS_INFO_AVAILABLE_FOCAL_LENGTHS是如何工作的吗?
文件上说:
此相机设备支持的android.lens.focalLength焦距列表。如果不支持光学变焦,此列表将只包含与设备的固定焦距相对应的单个值。否则,此列表将包括相机设备支持的每个焦距,按升序排列。 单位:毫米
最后一行表示输出应该是以毫米为单位测量的手机相机焦距的浮动,但控制台将第一个值打印为:
D/焦距: 3.95
它小于制造商显示的手机焦距:
摩托罗拉Moto G6规格。
孔径f/1.8。焦距29毫米
我做错了什么吗?我用的是CameraCharacteristics.get(.)检索该值
发布于 2021-04-10 02:21:19
我想我解决了。我在回答我自己的问题,以防有人像我一样迷路。
这里的问题是,CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS返回相机的真正焦距,手机的微小镜头有几米的焦距,但这不是你在拍照时看到的。
这里的关键是获得有效焦距,它是通过将物理FL乘以传感器大小得到的。后者可通过以下方式获得:
CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE
取这些值的低音值
所以你期望你手机的有效焦距是:
EFL = FL *尺寸
现在我得到了一个更可靠的值,焦距为25毫米。
(更多信息见安东·戈林摄影
发布于 2022-03-02 10:22:23
我也遇到了这个问题,你的回答很有帮助。不过,我想补充一点小小的更正,公式实际上是:
EFL = FL x CF
CF =作物因子,它实际上不是传感器的大小,而是43.27和传感器大小之间的比率:
作物因子是我们计算的传感器的全帧对角线与对角线的比值。来源:安东·戈林摄影
在这种情况下,最后的公式是:
EFL = FL * (43.27 /大小)
FL = LENS_INFO_AVAILABLE_FOCAL_LENGTHS返回的焦距
SIZE = sqrt(sensorWidth * sensorWidth + sensorHeight * sensorHeight)
你可以像你说的那样使用SENSOR_INFO_PHYSICAL_SIZE获得传感器的宽度和高度。
我希望这能帮到你
https://stackoverflow.com/questions/67030064
复制相似问题