我正在开发一个用于捕获图像并将其转换为文本Firebase的应用程序,证明响应正确,但问题是 不能从实时捕获图像中获取任何文本,但是当我从图库中选择图像文件时,任何解决firebase的解决方案都可以正常工作 视觉.....
// Getting Image
public void ImageFromMediaImage(ByteBuffer buffer,int rotation,Context context) {
int result;
switch (rotation) {
case 0:
result = FirebaseVisionImageMetadata.ROTATION_0;
break;
case 90:
result = FirebaseVisionImageMetadata.ROTATION_90;
break;
case 180:
result = FirebaseVisionImageMetadata.ROTATION_180;
break;
case 270:
result = FirebaseVisionImageMetadata.ROTATION_270;
break;
default:
result = FirebaseVisionImageMetadata.ROTATION_0;
}
Log.i(TAG,"ImageFromMediaImage nn: "+result);
FirebaseVisionImageMetadata metadata = new FirebaseVisionImageMetadata.Builder()
.setWidth(280) // 480x360 is typically sufficient for
.setHeight(160) // image recognition
.setformat(ImageFormat.NV21)
.build();
// [END set_metadata]
// [START image_from_buffer]
// Checkimage checkImage =new Checkimage();
// checkImage.makeImage(buffer);
FirebaseVisionImage image = FirebaseVisionImage.fromByteBuffer(buffer,metadata);
TextRecognizeDetect(image);
}
处理图像
public void TextRecognizeDetect(final FirebaseVisionImage firebaseVisionImage){
Log.i(TAG,"TextRecognizeDetect: ");
detector = FirebaseVision.getInstance().getcloudTextRecognizer();
// [END set_detector_options_cloud]
// [START get_detector_cloud]
// FirebaseVisionTextRecognizer detector = FirebaseVision.getInstance()
// .getcloudTextRecognizer();
// Or,to change the default settings:
// FirebaseVisionTextRecognizer detector = FirebaseVision.getInstance()
// .getcloudTextRecognizer(options);
// [END get_detector_cloud]
// [START run_detector_cloud]
detector.processImage(firebaseVisionImage).addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
@Override
public void onSuccess(FirebaseVisionText firebaseVisionText) {
// stringBuffer =new StringBuffer();
String resultText =firebaseVisionText.getText();
Log.i(TAG,"onSuccess: "+resultText);
// stringBuffer.append(resultText);
for (FirebaseVisionText.TextBlock block: firebaseVisionText.getTextBlocks()) {
String blockText = block.getText();
Float blockConfidence = block.getconfidence();
List<RecognizedLanguage> blockLanguages = block.getRecognizedLanguages();
Point[] blockCornerPoints = block.getcornerPoints();
Rect blockFrame = block.getBoundingBox();
for (FirebaseVisionText.Line line: block.getLines()) {
String lineText = line.getText();
Float lineConfidence = line.getconfidence();
Log.i(TAG,"onSuccess: "+lineText);
Log.i(TAG,"onSuccess: "+resultText );
// stringBuffer.append("\n " +lineText);
List<RecognizedLanguage> lineLanguages = line.getRecognizedLanguages();
Point[] lineCornerPoints = line.getcornerPoints();
Rect lineFrame = line.getBoundingBox();
for (FirebaseVisionText.Element element: line.getElements()) {
String elementText = element.getText();
Float elementConfidence = element.getconfidence();
Log.i(TAG,"onSuccess: "+elementText);
Log.i(TAG,"onSuccess: "+resultText );
List<RecognizedLanguage> elementLanguages = element.getRecognizedLanguages();
Point[] elementCornerPoints = element.getcornerPoints();
Rect elementFrame = element.getBoundingBox();
}
}
}
TranslateLetter translateLetter= TranslateLetter.getTranslateLetter();
translateLetter.TranslateWords(resultText,context);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(context,e.getMessage(),Toast.LENGTH_SHORT).show();
}
});
}