当从相机识别文本时显示吐司消息
Show a toast message when a text is recognized from camera
我正在尝试从实时摄像头源中检测具有特定格式的文本,并在自动检测到该文本时显示提示消息。
我能够检测到文本并在其周围放置一个框。但我很难显示该消息。
这是来自处理器的 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
}
}
}
}
-> 祝酒词不是我的最终目标,如果我能解决这个问题,我会解决主要问题。
-> 我正在构建文本视觉的代码实验室教程 api
首先将上下文从 OcrCaptureActivity
传递到 OcrDetectorProcessor
class,然后从该上下文传递到 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();
}
});
}
我正在尝试从实时摄像头源中检测具有特定格式的文本,并在自动检测到该文本时显示提示消息。 我能够检测到文本并在其周围放置一个框。但我很难显示该消息。
这是来自处理器的 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
}
}
}
}
-> 祝酒词不是我的最终目标,如果我能解决这个问题,我会解决主要问题。 -> 我正在构建文本视觉的代码实验室教程 api
首先将上下文从 OcrCaptureActivity
传递到 OcrDetectorProcessor
class,然后从该上下文传递到 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();
}
});
}