Я не могу прочитать растровый QR-код из Vision API, Zxing - PullRequest
0 голосов
/ 02 мая 2020

У меня есть растровое изображение QRcode. Я хочу прочитать QR-код, поэтому я использую Обнаружение штрих-кода с Mobile Vision API , он не работает, и я также использую Zxing, он работает, но это занимает много времени, если не найден QR-код на изображении, могу ли я сделать тайм-аут по этому методу.

//Vision API
Bitmap pic = api.getBitmapNavCam();
String sPic = convert(pic,x);

public String convert(Bitmap myBitmap,double x){ 
    String text = "";
    BarcodeDetector detector = new BarcodeDetector.Builder(getApplicationContext())
            .setBarcodeFormats(Barcode.DATA_MATRIX | Barcode.QR_CODE).build();
    if(!detector.isOperational()){
        Log.d(TAG,"no QR");
    }
    Frame frame = new Frame.Builder().setBitmap(myBitmap).build();
    SparseArray<Barcode> barcodes = detector.detect(frame);
    Barcode thisCode = barcodes.valueAt(0);
    text = thisCode.rawValue;
    Log.d(TAG,"rawVal= "+x+", "+text);
    return text;
}

*

//Zxing
public String convert(Bitmap mp,double pos) {
    final long start = System.currentTimeMillis();
    String decodText;
    int width = mp.getWidth();
    int height = mp.getHeight();
    int[] pixels = new int[width * height];
    mp.getPixels(pixels, 0, width, 0, 0, width, height);
    RGBLuminanceSource source = new RGBLuminanceSource(width, height, pixels);
    Log.d(TAG, "doing Convoert: "+pos+", "+width+", "+height);
    decodText = "";
    try {
        final com.google.zxing.Result result = new MultiFormatReader().decode(new BinaryBitmap(new HybridBinarizer(source)));
        final long end = System.currentTimeMillis();
        Log.d(TAG, "QRCode decode in " + (end - start) + "ms");
        decodText = result.getText();
    } catch (Exception e) {
        decodText = "";
        final long endx = System.currentTimeMillis();
        Log.d(TAG, "Error Read Bitmap: "+pos+", " + e+" , " + (endx - start) + "ms");
    }finally {
        return decodText;
    }
}
...