cameraX 对焦不准确
cameraX focus is not accurate
我正在创建自定义相机应用并尝试添加如下对焦功能
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
的点
相机无法准确获取点击区域的焦点,因为从 UI 坐标到标准化传感器直角坐标的转换 SurfaceOrientedMeteringPointFactory
可能不正确。转换还应考虑 PreviewView
的布局方向、比例类型、设备的旋转以及相机是否面向 front/back 等因素。 SurfaceOrientedMeteringPointFactory
不会那样做。如果您对转换结果感到好奇,请查看 PreviewViewMeteringPointFactory
。
PreviewView
已经提供了一个内部处理转换的测光点工厂,你可以调用PreviewView.getMeteringPointFactory()
并将tap坐标传递给它。
我正在创建自定义相机应用并尝试添加如下对焦功能
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
相机无法准确获取点击区域的焦点,因为从 UI 坐标到标准化传感器直角坐标的转换 SurfaceOrientedMeteringPointFactory
可能不正确。转换还应考虑 PreviewView
的布局方向、比例类型、设备的旋转以及相机是否面向 front/back 等因素。 SurfaceOrientedMeteringPointFactory
不会那样做。如果您对转换结果感到好奇,请查看 PreviewViewMeteringPointFactory
。
PreviewView
已经提供了一个内部处理转换的测光点工厂,你可以调用PreviewView.getMeteringPointFactory()
并将tap坐标传递给它。