我正在尝试在我的自定义相机找到焦点后锁定焦点。 首先将自动对焦模式设置为自动:
builder.set(CaptureRequest.CONTROL_AF_MODE,
CaptureRequest.CONTROL_AF_MODE_AUTO);
触摸预览后它会找到焦距,我必须使用以下代码锁定 AF 和 AE:
builder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
builder.set(CaptureRequest.CONTROL_AE_LOCK, true);
锁定 AE 在任何设备上都能正常工作。锁定自动对焦适用于 Nexus5 和 Nexus 5x。但是对于三星S5和S6,它一直在尝试搜索焦点。
锁定焦点的最佳方式是什么?
最佳答案
为了锁定 AF,您必须注意使用 capture()
而不是 repeatingRequest()
仅请求一次 AF_TRIGGER
>(如果不是,它会进入 af 请求循环并始终尝试聚焦,但一些 nexus 在其 FW 中修复了此问题,因此某些设备如 Nexus 5
聚焦良好,即使它不应该聚焦)
所以,正确的顺序是:
将
CONTROL_AF_MODE
设置为CONTROL_AF_MODE_AUTO
(通过session.setRepeatingRequest()
)和AF_REGIONS
和AE_REGIONS
如果你想要的话等到您通过检查
CaptureCallback
中的totalCaptureRequest
来检查CONTROL_AF_MODE
是否已处于自动状态。在构建器中设置
AF_TRIGGER_START
以及CONTROL_AF_MODE_AUTO
但这次不使用session.setRepeatingRequest()
使用session.capture()
.紧接着,设置
AF_TRIGGER
以设置AF_TRIGGER_IDLE
(不是取消!)再次使用session.setRepeatingRequest()
以及CONTROL_AF_MODE_AUTO
。等待它聚焦,您将收到
FOCUSED_LOCKED
或NOT_FOCUSED_LOCKED
。
PASSIVE_FOCUSED
状态仅在 CONTROL_AF_MODE
处于连续图片而非自动时!
在执行触发之前注意真正处于自动对焦模式。
您应该始终对所有触发器使用 session.capture()
(也使用 CONTROL_AE_PRECAPTURE_TRIGGER
),但在此之后始终记得将触发器置于 IDLE
session.repeatingRequest()
关于android - 如何在 camera2 api,android 中锁定焦点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42127464/