我想知道相机的视角,就像在this问题中一样,但是使用android.hardware.camera2。如何使用新的camera2库重现下一个代码。
Camera.Parameters p = camera.getParameters();
double thetaV = Math.toRadians(p.getVerticalViewAngle());
double thetaH = Math.toRadians(p.getHorizontalViewAngle());
有没有办法做同样的事情?
答案 0 :(得分: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))
因此,我们需要知道帧大小和焦距
帧大小是相机的大小,你可以在链接下面找到代码
https://stackoverflow.com/a/30403558
另外,焦距你可以在下面找到链接
Manual focus in camera2, android
我将这样的代码组合在一起
函数calculateFOV()计算FOV角度
答案 1 :(得分:5)
就我的研究而言,答案是肯定的。使用camera2
API,没有可以为您提供垂直和水平视角的通话。
但是,您无需使用camera2
API来获取这些值。您只需使用原始camera
API获取垂直和水平视角,然后将camera2
API用于应用的其余部分。
据我所知,相机和camera2
API之间的实际图像捕获固件没有变化。
答案 2 :(得分:4)
你可以用数学方法做到。
你有:
target=999
sum=0
for i=1 to target do
if (i mod 3=0) or (i mod 5)=0 then sum:=sum+i
output sum
,对象的宽度L
,与对象的距离您想要计算角度d
(alpha),即视野。
做一些触发:
a
您可以这样做来计算水平视野。祝你好运!
答案 3 :(得分:1)
使用 camera2
API,我们可以这样做:
val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
val cameraCharacteristics = cameraManager.getCameraCharacteristics("0") // hardcoded first back camera id
val focalLength = cameraCharacteristics.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS)?.firstOrNull() ?: return
val sensorSize = cameraCharacteristics.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE) ?: return
val horizontalAngle = (2f * atan((sensorSize.width / (focalLength * 2f)).toDouble())) * 180.0 / Math.PI
val verticalAngle = (2f * atan((sensorSize.height / (focalLength * 2f)).toDouble())) * 180.0 / Math.PI
// using camera2 API we got the same data as with legacy Camera API (with it was easier):
// val parameters = camera.getParameters()
// val horizontalAngle = parameters.getHorizontalViewAngle()
// val verticalAngle = parameters.getVerticalViewAngle()
但通常这些值适用于 4:3 纵横比预览,如果您需要 16:9 纵横比或其他,请检查此 Without additional calculation Camera or camera2 APIs return FOV angle values for 4:3 aspect ratio by default?