我想在使用外部鱼眼镜头的同时将自定义相机焦距设置为无限远,这是我到目前为止所做的:
builder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_OFF);
builder.set(CaptureRequest.LENS_FOCUS_DISTANCE, 0.0f);
但结果太模糊了。
我使用的是三星S6和Nexus 5。 外置镜头的广角为170度。
有人可以帮忙吗?
答案 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);