Android camera2 API在AF模式下获取焦距

Posted

技术标签:

【中文标题】Android camera2 API在AF模式下获取焦距【英文标题】:Android camera2 API get focus distance in AF mode 【发布时间】:2015-08-23 20:18:07 【问题描述】:

我正在使用 android camera2 API。

我可以在手动对焦模式下使用 LENS_FOCUS_DISTANCE 获取焦距值。但是,AF 模式下该属性始终为零。有什么办法可以在AF模式下获得焦距?

【问题讨论】:

【参考方案1】:

距镜头最前表面的最短距离 成为焦点。

如果镜头是定焦的,则为 0。

http://developer.android.com/intl/es/reference/android/hardware/camera2/CameraCharacteristics.html

另外,如果你想管理焦点,记住LENS_INFO_MINIMUM_FOCUS_DISTANCE给你最小焦点,但要获得“最大”焦点你必须使用LENS_INFO_HYPERFOCAL_DISTANCE

float yourMinFocus = mCameraCharacteristics.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE);
float yourMaxFocus = mCameraCharacteristics.get(CameraCharacteristics.LENS_INFO_HYPERFOCAL_DISTANCE);

对于 2021 年使用 CameraX,以下是如何查找 LENS_INFO_MINIMUM_FOCUS_DISTANCE 等相机特征:

theCamera = cameraProvider.bindToLifecycle(...
CameraCharacteristics camChars = Camera2CameraInfo
   .extractCameraCharacteristics(theCamera.getCameraInfo());
float discoveredMinFocusDistance = camChars
   .get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE);
Log.i("dev", "min focus is " + discoveredMinFocusDistance);

【讨论】:

【参考方案2】:

如果LENS_INFO_MINIMUM_FOCUS_DISTANCE的值为0,表示为定焦,不支持手动对焦。 功能有限 - 存在于报告至少为 HARDWARE_LEVEL_LIMITED 的所有相机设备上

【讨论】:

以上是关于Android camera2 API在AF模式下获取焦距的主要内容,如果未能解决你的问题,请参考以下文章

Android Camera2 拍照——对焦模式

Camera2 API预览方面已损坏

如何使用Android中的Camera2 API在不预览的情况下拍摄多张照片?

Android Camera2 API:捕获视频而不预览

Camera2 API 自动对焦与三星 S5

Camera2用Android API 29中的两个物理流替换一个逻辑流