【问题标题】:CameraX ImageAnalysis set TargetResolution smaller than 640x480CameraX ImageAnalysis 设置 TargetResolution 小于 640x480
【发布时间】:2020-11-24 03:11:04
【问题描述】:

我正在尝试通过将 480x360 图像提供给 CameraX 的 ImageAnalysis 来提高人脸检测率。但是,以下代码会生成 640x480 图像,这会将检测速度降低到 10 fps。如果我给 480x360,我可以将速率提高到 20。

  1. 如何获得更小的目标分辨率和默认值

  2. 是否可以将我为图像分析获得的图像显示为 prweview。与预览用例相反。这样人脸检测就不会和预览有太大的延迟了。

    图像分析图像分析 = 建设者 .setTargetResolution(新尺寸(360, 480)) .setTargetRotation(旋转) .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) .build();

【问题讨论】:

  • 你能得到ImageProxy 低于640*480 的尺寸吗?即使我设置了 176*144,它仍然是默认值。只有预览在改变。

标签: android-camera firebase-mlkit android-camerax


【解决方案1】:

如何获得更小的目标分辨率和默认值

docs 的默认值应为 640x480。

至于如何获得更小的目标分辨率,我可以想象三种可能性。

  1. 您在某处错误地引用了 imageAnalysis 对象,它忽略了您的构建器,并默认使用 640x480 的默认分辨率。
  2. 您的相机不支持 Size(360,480) 分辨率,支持的最接近的分辨率是 640x480。
  3. 您以错误的顺序引用尺寸,即尺寸 (360, 480) 可能导致选择的分辨率与尺寸 (480, 360) 不同。 (您在问题中按两个顺序引用它们)。

根据docs

目标分辨率尝试建立图像分辨率的最小界限。实际图像分辨率将是最接近的可用分辨率,其尺寸不小于目标分辨率,由相机实现确定。但是,如果不存在等于或大于目标分辨率的分辨率,则会选择小于目标分辨率的最接近的可用分辨率。

所以,我会尝试一些较小的尺寸,例如Size(200, 200) 并查看支持的较小分辨率并从那里放大。

有没有办法将我为图像分析获得的图像显示为 prweview。与预览用例相反。这样人脸检测就不会和预览有太大的延迟了。

我不确定您为什么认为这会更快,因为这似乎会序列化操作而不是同步执行它们。

如果您需要这方面的进一步帮助,请提供有关创建 ImageAnalysis 实例的所有代码。

【讨论】:

  • 0 = {Size@11085} "1440x1080" 1 = {Size@11086} "1280x720" 2 = {Size@11087} "960x720" 3 = {Size@11088} "960x540" 4 = {尺寸@11089} "720x720" 5 = {尺寸@11090} "800x600" 6 = {尺寸@11091} "720x480" 7 = {尺寸@11092} "640x480" 8 = {尺寸@11093} "480x320" 9 = {Size@11094} "352x288" 10 = {Size@11095} "320x240" 11 = {Size@11096} "176x144" 我用错了数字。所以轻微的错误最终会给出默认的结果。这也意味着我们必须以某种方式获取此列表并选择所需的名称。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 2019-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多