获取Android相机设备的视角

Dav*_* D. 8 camera android angle android-camera

我想知道相机的视角,就像在这个问题中,但使用android.hardware.camera2.如何使用新的camera2库重现下一个代码.

Camera.Parameters p = camera.getParameters();
double thetaV = Math.toRadians(p.getVerticalViewAngle());
double thetaH = Math.toRadians(p.getHorizontalViewAngle());
Run Code Online (Sandbox Code Playgroud)

有没有办法做同样的事情?

小智 6

我搜索谷歌一个人展示的可能性,他通过Camera2 api计算FOV

https://photo.stackexchange.com/questions/54054/calculating-the-field-of-view-for-a-nexus-5

并找到了等式

http://www.bobatkins.com/photography/technical/field_of_view.html

FOV(直线)= 2*arctan(帧尺寸/(焦距*2))

因此,我们需要知道帧大小焦距

框架大小是相机的大小,你可以在下面的链接找到代码

/sf/answers/2128249091/

另外,焦距你可以在下面链接找到

手动对焦于camera2,android

我把这样的代码组合起来

函数calculateFOV()计算FOV角度

https://github.com/pchan1401-ICIL/Camera2FOV


Cje*_*en1 5

就我的研究而言,答案是否定的.使用camera2API,没有可以为您提供垂直和水平视角的通话.

但是,您无需使用camera2API来获取这些值.您可以使用原始cameraAPI获取垂直和水平视角,然后将camera2API用于应用程序的其余部分.

据我所知,相机和camera2API 之间的实际图像捕获固件没有变化.


Anu*_*oob 4

你可以用数学方法来做。

图表

你有:

  • L,物体的宽度
  • d,到物体的距离

您想要计算角度a(alpha),即视野。

做一些三角函数:

tan(a/2) = (L/2)/d
tan(a/2) = L/2d
a/2 = atan(L/2d)
a = 2*atan(L/2d)
Run Code Online (Sandbox Code Playgroud)

您可以这样做来计算水平视野。祝你好运!