tyc*_*czj 10 android firebase-mlkit android-camerax
我正在使用FirebaseVision对象检测从CameraX相机预览中检测事物。它正在检测找到的东西,但我试图绘制通过相机预览检测到的项目的边界框。这样做时,firebase 返回的边界框不适用于图像本身,而不是它们出现在错误位置的预览视图。
我从 firebase 返回的图像大小是1200x1600,预览大小是2425x1440
如何将从 firebase 返回的边界框转换为正确的屏幕坐标?
我最终做的是将相机拍摄的图像尺寸,将宽度/高度除以视图宽度/高度以获得比例尺寸
if(isPortraitMode()){
_scaleY = overlayView.height.toFloat() / imageWidth.toFloat()
_scaleX = overlayView.width.toFloat() / imageHeight.toFloat()
}else{
_scaleY = overlayView.height.toFloat() / imageHeight.toFloat()
_scaleX = overlayView.width.toFloat() / imageWidth.toFloat()
}
Run Code Online (Sandbox Code Playgroud)
现在我有了比例尺,然后我可以通过 firebase 检测器返回边界框并按比例尺平移 x 和 y 坐标
private fun translateX(x: Float): Float = x * _scaleX
private fun translateY(y: Float): Float = y * _scaleY
private fun translateRect(rect: Rect) = RectF(
translateX(rect.left.toFloat()),
translateY(rect.top.toFloat()),
translateX(rect.right.toFloat()),
translateY(rect.bottom.toFloat())
)
Run Code Online (Sandbox Code Playgroud)
然后为您提供缩放的矩形坐标,然后您将其绘制在屏幕上
| 归档时间: |
|
| 查看次数: |
1463 次 |
| 最近记录: |