我想在使用 google Vision api 时减少减少条形码跟踪窗口。有一些答案here https://stackoverflow.com/questions/36405717/android-vision-reduce-bar-code-tracking-window/36428822#36428822但他们感觉有点过时了。
我正在使用谷歌的示例:https://github.com/googlesamples/mlkit/tree/master/android/vision-quickstart https://github.com/googlesamples/mlkit/tree/master/android/vision-quickstart
目前,我试图弄清楚条形码是否在我的覆盖框内条码扫描器处理器 https://github.com/googlesamples/mlkit/blob/master/android/vision-quickstart/app/src/main/java/com/google/mlkit/vision/demo/kotlin/barcodescanner/BarcodeScannerProcessor.kt onSuccess
打回来:
override fun onSuccess(barcodes: List<Barcode>, graphicOverlay: GraphicOverlay) {
if(barcodes.isEmpty())
return;
for(barcode in barcodes) {
val center = Point(graphicOverlay.imageWidth / 2, graphicOverlay.imageHeight / 2)
val rectWidth = graphicOverlay.imageWidth * Settings.OverlayWidthFactor
val rectHeight = graphicOverlay.imageHeight * Settings.OverlayHeightFactor
val left = center.x - rectWidth / 2
val top = center.y - rectHeight / 2
val right = center.x + rectWidth / 2
val bottom = center.y + rectHeight / 2
val rect = Rect(left.toInt(), top.toInt(), right.toInt(), bottom.toInt())
val contains = rect.contains(barcode.boundingBox!!)
val color = if(contains) Color.GREEN else Color.RED
graphicOverlay.add(BarcodeGraphic(graphicOverlay, barcode, "left: ${barcode.boundingBox!!.left}", color))
}
}
Y 方向它工作得很好,但是 X 值来自barcode.boundingBox
e.g. barcode.boundingBox.left
似乎有偏移。是否基于正在计算的内容图形叠加 https://github.com/googlesamples/mlkit/blob/master/android/vision-quickstart/app/src/main/java/com/google/mlkit/vision/demo/GraphicOverlay.java?
我预计下面的值接近 0,但这里的偏移量约为 90:
或者根据框裁剪图像可能更有效?