android-vision - 当从相机识别文本时显示 toast 消息

标签 android-vision

我正在尝试从实时摄像头源中检测具有特定格式的文本,并在自动检测到该文本时显示提示消息。 我能够检测到文本并在其周围放置一个框。但我很难显示 toast 消息。

这是来自处理器的 receiveDetections 方法

@Override
public void receiveDetections(Detector.Detections<TextBlock> detections) {
    mGraphicOverlay.clear();
    SparseArray<TextBlock> items = detections.getDetectedItems();
    for (int i = 0; i < items.size(); ++i) {
        TextBlock item = items.valueAt(i);
        if (item != null && item.getValue() != null) {
            Log.d("OcrDetectorProcessor", "Text detected! " + item.getValue());

            // Check if it is the correct format
            if (item.getValue().matches("^\\d{3} \\d{3} \\d{4} \\d{4}")){
                OcrGraphic graphic = new OcrGraphic(mGraphicOverlay, item);
                mGraphicOverlay.add(graphic);

                // Show the toast message

            }
        }


    }
}

-> toast 不是我的最终目标,如果我能解决这个问题,我就会解决主要问题。 -> 我在文本视觉 api 的代码实验室教程之上构建

最佳答案

首先将上下文从 OcrCaptureActivity 传递到 OcrDetectorProcessor 类,并从该上下文传递到 runUiThread。这段代码一次显示所有文本。如果你想一个一个地显示单词,你需要从 TextBlock 项目中拆分出来。

Context context;

OcrDetectorProcessor(GraphicOverlay<OcrGraphic> ocrGraphicOverlay, Context context) {
    mGraphicOverlay = ocrGraphicOverlay;
    this.context = context;
}

@Override
public void receiveDetections(Detector.Detections<TextBlock> detections) {
    mGraphicOverlay.clear();
    final String result;
    String detectedText = "";
    SparseArray<TextBlock> items = detections.getDetectedItems();
    for (int i = 0; i < items.size(); ++i) {

        final TextBlock item = items.valueAt(i);
        OcrGraphic graphic = new OcrGraphic(mGraphicOverlay, item);
        mGraphicOverlay.add(graphic);
        detectedText += item.getValue();
    }
    result = detectedText;
    ((OcrCaptureActivity)context).runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(context, result, Toast.LENGTH_SHORT).show();
        }
    });
}

关于android-vision - 当从相机识别文本时显示 toast 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45281293/

相关文章:

android - Mobile Vision API 的面部跟踪(而不是检测)可以独立于其 CameraSource 使用吗?

java - 运行时异常 部分设备无法连接相机服务

android - 无法解析方法 : CameraSource. Builder.setAutoFocusEnabled

android - 如何在使用 Android 移动视觉库时处理单个相机帧

android - 人脸检测API-坐标

由于 com.google.android.gms.version 元数据导致的 Android 仪器测试错误

swift - 从示例缓冲区获取 UIImage 时 Google Vision 崩溃

android - 具有谷歌视觉的 QR 码扫描仪的自动缩放功能

android-vision - 机器视觉 API 是否离线工作?

android - 如何从灰度字节缓冲区图像创建位图?