我正在创建一个自定义相机应用,并尝试添加以下对焦功能
val factory = SurfaceOrientedMeteringPointFactory(
viewFinder.width.toFloat(),
viewFinder.height.toFloat()
)
val point = factory.createPoint(event.x, event.y)
try {
cameraControl?.cancelFocusAndMetering()
val action = FocusMeteringAction.Builder(point, FocusMeteringAction.FLAG_AF)
.setAutoCancelDuration(5, TimeUnit.SECONDS)
.build()
}
对焦不准确,因为您可以在白色圆圈下方看到我轻按的位置,以使笔聚焦并查看它的聚焦位置。
拍子和焦点之间的距离非常大。我的默认相机应用不是这种情况。
如何将对焦调整到我点击的位置 PreviewView
摄像头无法准确地获取对轻敲区域的聚焦,因为SurfaceOrientedMeteringPointFactory
从UI坐标到归一化传感器rect坐标的转换可能不正确。转换还应考虑诸如PreviewView
的布局方向,缩放比例类型,设备的旋转以及相机是否正面/背面等因素。SurfaceOrientedMeteringPointFactory
不这样做。如果您好奇转换的样子,请查看PreviewViewMeteringPointFactory
。
PreviewView
已经提供了一个计量点工厂,该工厂可以在内部处理转换,您可以调用PreviewView.getMeteringPointFactory()
抽头坐标并将其传递给它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句