如何在camera2 api,android中设置无限远焦点?

时间:2017-02-07 07:44:27

标签: android android-camera2

我想在使用外部鱼眼镜头的同时将自定义相机焦距设置为无限远,这是我到目前为止所做的:

builder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_OFF);
builder.set(CaptureRequest.LENS_FOCUS_DISTANCE, 0.0f);

但结果太模糊了。

我使用的是三星S6和Nexus 5。 外置镜头的广角为170度。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

如果您只是在谈论使用内置相机的镜头来实现鱼眼,那么您应该使用的最低值是:

float minFocalDist = cameraCharacteristics.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE);

如果你正在使用外置镜头,那么我相信正确的方法实际上是在相机上使用自动对焦,因为那应该集中在鱼眼镜头的焦距......我想。所以外部镜头正在照顾鱼眼,而内部则负责自动对焦。但是,如果这不起作用,那么当您将焦距设置为超焦距时,请查看所获得的内容。这个距离可能不是最佳的,但它应该在大多数情况下都有效......

float hyperFocalDist = cameraCharacteristics.get(CameraCharacteristics.LENS_INFO_HYPERFOCAL_DISTANCE);

答案 1 :(得分:2)

对于任何在这里谷歌搜索的人来说, Android CameraX,CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE等相机特性。

2021 年的语法类似于 ...

所以,你已经完成了拿到相机的过程......

theCamera = cameraProvider.bindToLifecycle((LifecycleOwner)this,
              yourCameraSelector, yourImageAnalysis, yourPreview);

现在的代码是:

CameraCharacteristics camChars = Camera2CameraInfo
   .extractCameraCharacteristics(theCamera.getCameraInfo());
float discoveredMinFocusDistance = camChars
   .get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE);