我一直在使用 Firebase MLkit 来检测图像中的文本,我需要一种方法来弄清楚如何检测文本的大小。我意识到 Kotlin 有办法做到这一点,但我正在使用 Java 工作,所以我一直在寻找一种在 android studio 上用 Java 做到这一点的方法。
我想我需要在下面的检测文本方法中添加一些内容:
private void detectTextFromImage()
{
FirebaseVisionImage firebaseVisionImage = FirebaseVisionImage.fromBitmap(imageBitmap);
FirebaseVisionTextDetector firebaseVisionTextDetector = FirebaseVision.getInstance().getVisionTextDetector();
firebaseVisionTextDetector.detectInImage(firebaseVisionImage).addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
@Override
public void onSuccess(FirebaseVisionText firebaseVisionText) {
displayTextFromImage(firebaseVisionText);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(PatientActivity.this, "Error: " + e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
谢谢
最佳答案
我找不到 ML 套件中内置的方法来提取文本大小,但解决方法是获取线条或元素的框架并计算其高度:
// Image recognition stuff...
List<FirebaseVisionText.TextBlock> blocks = visionText.getTextBlocks();
for (FirebaseVisionText.TextBlock textBlock : visionText.getTextBlocks()) {
for (FirebaseVisionText.Line line : textBlock.getLines()) {
Rect frame = line.getBoundingBox();
float fontSize = frame.bottom - frame.top;
// Do something with fontSize, e.g. add to a list
}
}
请注意,根据图像拍摄的角度,某些文本可能会显得更大,因此会有更大的边界框,因此只有当图像正面拍摄到文本时,这才是准确的。
希望这有帮助! (抱歉我来晚了一点)
关于java - 有没有办法用 MLKit 检测文本的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60480454/