You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中ML Kit人脸检测边界框缩放匹配相机预览问题排查

问题:ML Kit人脸检测边界框缩放计算错误排查

问题概述

我在Android应用中使用ML Kit人脸检测结合Camera 2库开发,目前功能可正常运行,能获取相机预览中的人脸边界框,但对比ML Kit官方示例应用,发现边界框的缩放计算存在问题——预览里的边界框无法完整覆盖面部(比如双耳、下巴区域),仅能随人脸左右移动。

缩放计算核心代码

private fun drawAdjustedFaceBoundBox(canvas: Canvas) {

    val myPaint = Paint()
    myPaint.color = Color.rgb(220, 249, 10)
    myPaint.strokeWidth = 5f
    myPaint.style = Paint.Style.STROKE

    if (analyzedImageSize.width != 0 && analyzedImageSize.height != 0) {

        val horizontalScaleFactor = previewScreenSize.width / analyzedImageSize.width.toFloat()
        val verticalScaleFactor = previewScreenSize.height / analyzedImageSize.height.toFloat()

        val adjustedBoundRect = RectF()
        adjustedBoundRect.top = (objectBound.top * verticalScaleFactor) + surfaceTop.toFloat()
        adjustedBoundRect.left = objectBound.left * horizontalScaleFactor
        adjustedBoundRect.right = objectBound.right * horizontalScaleFactor
        adjustedBoundRect.bottom = (objectBound.bottom * verticalScaleFactor) + surfaceTop.toFloat()

        val adjustedMirrorObjectBound = RectF(adjustedBoundRect)

        if (mirrorCoordinates) {
            val originalRight = adjustedBoundRect.right
            val originalLeft = adjustedBoundRect.left
            // 前置摄像头需镜像坐标
            adjustedMirrorObjectBound.left = (previewScreenSize.width - originalRight)
            adjustedMirrorObjectBound.right = (previewScreenSize.width - originalLeft)
        }

        canvas.drawRect(adjustedMirrorObjectBound, myPaint)
    }
}

实现逻辑说明

  • ML Kit分析的图像尺寸为480640,相机预览窗口尺寸为10802131,使用前置摄像头
  • 分别计算X轴(horizontalScaleFactor)和Y轴(verticalScaleFactor)的缩放因子,将原始边界框的坐标值与对应因子相乘
  • surfaceTop.toFloat()代表屏幕顶部到相机预览视图的距离,当前值为0
  • 针对前置摄像头场景,在缩放计算完成后对坐标进行镜像处理

效果对比

  • 我的应用预览边界框:我的应用预览边界框
  • ML Kit示例应用边界框:ML Kit示例应用边界框
  • 应用实际运行效果:应用实际运行效果

相关代码仓库

  • 我的代码仓库(请查看dev分支)
  • ML Kit官方示例仓库的人脸检测实现

内容的提问来源于stack exchange,提问作者Chathuranga Shan Jayarathna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 03:25:19