Firebase ML Kit TextRecognizer更改扫描区域的大小



我希望相机只检测这个矩形内的文本(如图所示(

文本检测器应用程序示例

请查看ML Kit Material Design Showcase应用程序,该应用程序提供了如何做到这一点的示例。我们在这里采取的方法是检测视图中的所有条形码,但只对覆盖中心的条形码进行操作。

BarcodeProcessor.java中的以下片段:

for (FirebaseVisionBarcode barcode : results) {
RectF box = graphicOverlay.translateRect(barcode.getBoundingBox());
if (box.contains(graphicOverlay.getWidth() / 2f, graphicOverlay.getHeight() / 2f)) {
barcodeInCenter = barcode;
break;
}
}

或者,您可以在通过条形码检测器发送图像之前进行裁剪。然而,发送整个图像的好处是,典型的条形码可以在用户将条形码与覆盖物对齐之前很久就被检测和解码。

private fun filterBarcodes(barcodes: List<Barcode>) {
val filteredBarcodes = mutableListOf<Barcode>()
barcodes.forEach { barcode ->
if (barcode.boundingBox.left > 100 && barcode.boundingBox.right < 400 &&
barcode.boundingBox.top > 200 && barcode.boundingBox.bottom < 400) {
filteredBarcodes.add(barcode)
}
}
if (filteredBarcodes.isNotEmpty()) {
readBarcodeData(filteredBarcodes.first())
}
}

最新更新