gpt4 book ai didi

ios - AVCaptureDevice 上的平滑焦点渐变

转载 作者:行者123 更新时间:2023-11-28 23:31:57 25 4
gpt4 key购买 nike

我正在使用 AVCaptureDevice setFocusModeLocked 来实现从 A 点到 B 点的聚焦斜坡。我这样做的方法是将 delta 定义为类似于 0.03 的值,然后重复调用 API 来设置 lensPosition。

   device.setFocusModeLocked(lensPosition: pointA, completionHandler: {[weak self] (time) in
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now(), execute: { [weak self] in

if pointA == pointB {
device.unlockForConfiguration()
return
}

var beginPoint = fmax(currentLensPosition + delta),Float(0))
let endPoint = fmin(pointB, Float(1.0))


self?.focusRampRecursive( beginPoint,
pointB:endPoint,
delta: delta,
device: device)
})
})

问题是斜坡不平滑。斜坡发生时可以看到跳跃。怎样才能让它顺畅?

最佳答案

有几种方法。

(1)减少函数重复调用的时间间隔。只有慢速调用才会产生视觉上明显的效果,如果足够快,人类无法注意到,例如你的灯以 50hz 闪烁,而你认为​​它一直亮着

(2)将增量减小到更小的值。因此,即使他们之间的时间很长,但每次的变化却很小。所以眼睛也无法注意到

(3) 使用其他非线性映射函数,如 exp 或 log 函数。而不是调用线性添加斜坡。其他 exp 或 log 可能更好,因为 A 到 B 通常不是线性映射的。在视觉不太敏感的区域,移动较快,在视觉敏感的区域,移动较慢。嗯,我该怎么描述这个。我能想到的最接近的例子是立体视觉。在更近的范围内,您实际上有更离散的级别可以表示。在较远的范围内,离散程度较低。同样的苹果作为焦点。

让您体验这一点的 ezist 方法是在 ubuntu 中运行 v4l2ucp 和 chesse。将焦点从一侧拖动到另一侧。你会发现近距离时变化很大,中远时变化很小

关于ios - AVCaptureDevice 上的平滑焦点渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56144752/

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