Auto Focus
什么是auto focus?简介



一个像素有两个 前置并列透镜阵列,左右可以纠正相位差
picamera2支持的 Auto Focus state
简而言之,就三种模式:
1.Manual
2.Auto
3.Continuous
自动对焦(AF)状态机有3种模式:
可以通过读取每张图像返回的“AfState”元数据来监控其在每种模式下的活动。
三种模式是:
- mannual手动:镜头永远不会自动移动,但“镜头位置”控制可以用来“手动”移动镜头。
这个控制的单位是屈光度(1 /米,单位),所以零可以用来表示“无穷大”。
“镜头位置”也可以在图像元数据中进行监控,并将指示镜头何时到达请求的位置。 - auto自动:在这种模式下,“后触发”控制可用于启动一个自动对焦循环。可以检查与图像一起接收的“AfState”元数据,以确定它何时完成以及是否成功,尽管我们建议使用辅助函数,使用户不必实现此操作。在这种模式下,镜头也永远不会自动移动,直到它被应用程序“触发”。
- 连续Continuous-自动对焦算法将连续运行,并在必要时自动重新对焦。应用程序可以根据需要在这些模式之间自由切换。
Auto
from picamera2 import Picamera2
from libcamera import controls
picam2 = Picamera2()
picam2.start(show_preview=True)
picam2.set_controls({
"AfMode": controls.AfModeEnum.Continuous})
Manual手动模式下的重要参数 lens position
from picamera2 import Picamera2
from libcamera import controls
picam2 = Picamera2()
picam2.start(show_preview=True)
picam2.set_controls({
"AfMode": controls.AfModeEnum.Manual, "LensPosition": 0.0})
lens position control( picam2.camera_controls['LensPosition'])给出三个值,即最小、最大和默认镜头位置。
- 最小值定义了 最远的焦距,
- 最大值指定了 最近的可实现的焦距(通过取其倒数)。
- 第三个值给出了一个“默认”值,这通常是镜头的超焦位置。
透镜位置的最小值通常为0.0(表示无穷大)。
对于最大值,一个值为10.0将表示最近的焦距为1 / 10米,或10厘米。
默认值通常可能在0.5到1.0左右,这意味着超焦距离约为1到2米。
一般来说,用户应该期望距离校准是近似的,因为它将取决于调整的准确性和用户的模块和执行校准的模块之间的变化程度。
特别注意:lensPosition 中设置的屈光度(焦距的倒数)是近似值,根本不能信任这种东西
实际上,对应关系可能是这样的
具体可以参考:这个
这里直接给出gui调焦的代码:
from picamera2 import Picamera2
import time
from libcamera import controls
def getVideo(duration,name="test.mp4"):
picam2 = Picamera2()
#picam2.set_controls({"AfMode": controls.AfModeEnum.Continuous})
picam2.set_controls

本文详细解释了picamera2库中的自动对焦(AutoFocus)功能,包括Manual、Auto和Continuous三种模式,以及如何通过lensposition控制手动对焦,并介绍了AfState参数和AfWondows参数的应用。

最低0.47元/天 解锁文章
6682

被折叠的 条评论
为什么被折叠?



