【发布时间】:2020-08-06 15:02:49
【问题描述】:
我想让相机只检测这个矩形内的文字(如图)
【问题讨论】:
标签: firebase flutter camera flutter-layout firebase-mlkit
我想让相机只检测这个矩形内的文字(如图)
【问题讨论】:
标签: firebase flutter camera flutter-layout firebase-mlkit
请查看ML Kit Material Design Showcase app,其中提供了有关如何执行此操作的示例。我们这里采用的方法是检测视图中的所有条码,但只对位于叠加层中心的条码进行操作。
来自BarcodeProcessor.java的以下sn-p:
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())
}
}
【讨论】: