Mobile Vision API读取的条形码不正确

时间:2017-05-11 14:34:01

标签: java android google-vision

最近我一直在做某种Android条码扫描应用。一切都很好,直到我意识到我的朋友在IOS上制作的相同应用程序在检测条形码方面要好得多。 Google Mobile Vision API经常出错,当真正的条形码为“12345 ...”时,它会检测到“72345 ....”等条形码。这是一般问题吗?有没有解决方案?

示例条形码: enter image description here

当我将设备放在上面时,此条形码被检测到正常,但是在任何小动作之后很可能会得到错误的代码。

3 个答案:

答案 0 :(得分:3)

我发现不使用第一场比赛,但应用简单的去抖策略非常有效。例如,在3个连续帧中出现条形码后,我只考虑有效匹配。 这可以在内部使用Detector<Barcode>的自定义com.google.android.gms.vision.barcode.BarcodeDetector中轻松完成。 它减慢了检测速度,但使它们更可靠。

答案 1 :(得分:1)

对于任何想要基于Google条码样本的快速解决方案的人。在BarcodeGraphicTracker中添加三个字段:

String currentBarcode = null;
int confirmCounter = 0;
final static int CONFIRM_VALUE = 10;

使用新方法更新BarcodeUpdateListener接口:

 @UiThread
 void onBarcodeConfirmed(Barcode barcode);

将此代码段添加到重写的onUpdate方法中:

if (currentBarcode != null && currentBarcode.equals(item.displayValue)){
        confirmCounter++;
        if (confirmCounter >= CONFIRM_VALUE){
            confirmCounter = 0;
            mBarcodeUpdateListener.onBarcodeConfirmed(item);
        }
    }else{
        currentBarcode = item.displayValue;
        confirmCounter = 0;
    }
}

现在,您可以通过将fps设置为相机源并更改CONFIRM_VALUE来对其进行调整。

答案 2 :(得分:0)

到目前为止,我发现的最佳解决方案是将cameraSource的FPS设置为15.0f。它会减慢预览速度,但结果会更可靠。然而,仍然不如iPhone的可靠性。

来自Google的示例:

https://github.com/googlesamples/android-vision/blob/master/visionSamples/barcode-reader/app/src/main/java/com/google/android/gms/samples/vision/barcodereader/BarcodeCaptureActivity.java

.setRequestFps()

是一种方法。