gpt4 book ai didi

java - 如何在 camera2 API 中触发手动自动对焦?

转载 作者:行者123 更新时间:2023-11-29 23:26:12 25 4
gpt4 key购买 nike

已弃用的相机 API 为相机对象提供了函数 autofocus(),我们可以在检测到我们得到的帧/图像模糊后增加预览/捕获的焦点。

现在我们更新了我们的应用程序以使用 camera2 API,并且仍在尝试弄清楚我们如何手动触发相机自动对焦。对于预览的初始化,我们使用以下代码:

// When the session is ready, we start displaying the preview.
mCaptureSession = cameraCaptureSession;
try {
// Auto focus should be continuous for camera preview.
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE,
CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
// Flash is automatically enabled when necessary.
setAutoFlash(mPreviewRequestBuilder);

// Finally, we start displaying the camera preview.
mPreviewRequest = mPreviewRequestBuilder.build();
mCaptureSession.setRepeatingRequest(mPreviewRequest,
mCaptureCallback, mBackgroundHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
}

稍后在分析图像质量时访问捕获帧时,如果图像太模糊,我们想再次触发自动对焦以提高结果质量:

private final ImageReader.OnImageAvailableListener mOnImageAvailableListener
= new ImageReader.OnImageAvailableListener() {

@Override
public void onImageAvailable(ImageReader reader) {
Log.e(TAG, "Image captured!");
Image image = reader.acquireLatestImage();
float focusScore = analyseImage(image);
if(focusScore < 10) {
// Here we would like to trigger some focus functionality
} else {
// Take the result frame as good enough and proceed
}

image.close();
}
};


更新:以下答案也帮助我实现了这个问题的解决方案: link

最佳答案

设置CONTROL_AF_TRIGGER捕获请求字段以启动一个请求以触发自动对焦操作。

该 Action 取决于自动对焦模式;对于连拍模式,如果认为已经对焦,AF 通常会被锁定。如果 AF 没有收敛,它会尝试快速收敛然后锁定 AF。锁定一直持续到一个请求的 AF_TRIGGER 设置为 CANCEL(或 AF 模式更改)。

因此,如果您想触发完整的 AF 扫描,您可能需要切换到 AF_MODE_AUTO 然后再触发,因为连续对焦触发不一定会重新扫描场景。

关于java - 如何在 camera2 API 中触发手动自动对焦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53519528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com