【发布时间】: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;
【问题讨论】:
标签: android firebase face-detection firebase-mlkit