gpt4 book ai didi

android - 使用 google mlkit 视觉样本减少跟踪窗口

转载 作者:行者123 更新时间:2023-12-02 13:15:37 26 4
gpt4 key购买 nike

我想在使用 google vision api 时减少减少条形码跟踪窗口。有一些答案here但他们觉得有点过时了。
我正在使用谷歌的示例:https://github.com/googlesamples/mlkit/tree/master/android/vision-quickstart
目前,我试图弄清楚 BarcodeScannerProcessor 内的覆盖框内是否有条码。 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-wise 它工作得很好,但 X 值来自 barcode.boundingBox例如 barcode.boundingBox.left似乎有一个偏移量。是否基于 GraphicOverlay 中的计算结果? ?
我希望下面的值接近 0,但这里的偏移量约为 90:
enter image description here
或者根据框裁剪图像可能更有效?

最佳答案

实际上边界框是正确的。诀窍是图像纵横比与视口(viewport)纵横比不匹配,因此图像被水平裁剪。尝试打开设置(右上角的齿轮)并选择合适的分辨率。
例如看看这两个屏幕截图。在第一个上,选择的分辨率(1080x1920)与我的手机分辨率相匹配,所以填充看起来不错(17px)。在第二个屏幕截图中,纵横比不同(720x720 分辨率为 1.0),因此图像被裁剪并且填充看起来不正确。
720x720
1080x1920
所以偏移量应该从图像坐标转换为屏幕坐标。引擎盖下GraphicOverlay使用矩阵进行此转换。您可以使用相同的矩阵:

    for(barcode in barcodes) {
barcode.boundingBox?.let { bbox ->
val offset = floatArrayOf(bbox.left.toFloat(), bbox.top.toFloat())
graphicOverlay.transformationMatrix.mapPoints(offset)

val leftOffset = offset[0]
val topOffset = offset[1]

...
}
}
唯一的问题是 transformationMatrix是私有(private)的,所以你应该添加一个 getter 来访问它。

关于android - 使用 google mlkit 视觉样本减少跟踪窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64285580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com