如何在 Firebase ML kit Android 中正确绘制检测到的人脸边界框?
Posted
技术标签:
【中文标题】如何在 Firebase ML kit Android 中正确绘制检测到的人脸边界框?【英文标题】:How can I correctly draw bouding box on detected face In Firebase ML kit Android? 【发布时间】:2021-05-07 14:53:21 【问题描述】:我正在开发一个使用 CameraX 和 Firebase ML 套件在实时摄像头中检测微笑的应用程序。 我面临的问题是我无法在检测到的面上绘制边界框。 我已将从边界框返回的点转换到我的视图中,但它不起作用,因为提供给 Firebase 模型的图像已旋转,与视图中的图像不同。
翻译和绘制边界框的代码:
// Draws a bounding box around the face.
float left= (float) 0.0;
float right=(float) 0.0;
if(facing== LENS_FACING_FRONT)
left=canvas.getWidth()-translateX(boundingBox.left);
right=canvas.getWidth()-translateX(boundingBox.right);
else if(facing== CameraSelector.LENS_FACING_BACK)
left = translateX(boundingBox.left);
right =translateX(boundingBox.right);
float top =translateY(boundingBox.top);
float bottom=translateY(boundingBox.bottom);
canvas.drawRect(left,top,right,bottom,boxPaint);
发送到 Firebase 模型的图像代码:
FirebaseVisionImage image = FirebaseVisionImage.fromMediaImage(mediaImage, rotation1);
计算旋转:
CameraManager cameraManager = (CameraManager) context.getSystemService(CAMERA_SERVICE);
int sensorOrientation=0 ;
try
sensorOrientation = cameraManager
.getCameraCharacteristics(String.valueOf(lensFacing))
.get(CameraCharacteristics.SENSOR_ORIENTATION);
catch (CameraAccessException e)
e.printStackTrace();
int adjustedorientation;
adjustedorientation=(orientation/90)*90;
adjustedorientation=adjustedorientation+sensorOrientation;
rotation1=(4-((adjustedorientation%360)/90))%4;
【问题讨论】:
【参考方案1】:我们对 Firebase ML Kit 进行了一些更改,以更好地区分设备端 API 和基于云的 API。 “ML Kit”(没有 firebase 品牌)包含所有设备上的 API。 Here's 从 firebase mlkit 到 mlkit 的迁移指南。所有进一步的改进和新的 API 将仅与新的 ML Kit 一起发布。要将 mlkit 人脸检测与 CameraX 一起使用,您可以在此处查看示例代码 (https://github.com/googlesamples/mlkit/blob/master/android/vision-quickstart/app/src/main/java/com/google/mlkit/vision/demo/java/CameraXLivePreviewActivity.java),了解如何为人脸绘制叠加层。
【讨论】:
【参考方案2】:这里是一个简单的好例子:https://github.com/happysingh23828/CameraX-FaceDetection-MlKit
【讨论】:
以上是关于如何在 Firebase ML kit Android 中正确绘制检测到的人脸边界框?的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI:在 Firebase ML Kit 识别的元素周围绘制矩形
通过 Firebase ML Kit 人脸检测检测多张人脸的轮廓