我正在尝试使用 Firebase 的 MLKit 与 Camerax 进行人脸检测。我很难让图像分析的 imageproxy 大小与 PreviewView 的大小相匹配。对于图像分析和 PreviewView,我将 setTargetResolution() 设置为 PreviewView 的宽度和高度。但是,当我在分析器中检查 Imageproxy 的大小时,它给我的宽度是 1920,高度是 1080。我的 PreviewView 宽度为 1080,高度为 2042。当我在 setTargetResolution() 中交换宽度和高度以进行图像分析时,图像代理中的宽度和高度都为 1088。我的预览视图也锁定为纵向模式。
最终,我需要将原始图像代理数据和面部点数据输入到 AR 代码中。因此,仅放大绘制面部点的图形叠加层对我不起作用。
问: 如果无法在 camerax 库中解决此问题,如何缩放从分析器返回的 imageproxy 以匹配预览视图?
我正在使用 Java 和最新的 Camerax 库:
def camerax_version = "1.0.0-beta08"
这个答案来自 @侯赛因的答案。我添加了相关的示例代码部分。
出于各种原因(示例设备特定的显示大小/硬件/相机或应用程序特定视图和处理),用于预览和分析的Camerax图像大小各不相同)但是,有一些选项可以映射处理图像大小和结果XY坐标以预览大小和预览XY坐标。
带有DimensionRatio 3:4的设置布局,用于预览和分析覆盖,在布局中,
例子:
设置预览和分析用例
例子:
定义比例尺和Traslate API,以获取分析图像XY坐标的映射预览XY坐标,如下所示
使用Translatex和Translatey方法将基于分析图像的数据绘制到预览中
例子: