Android条形码API - 扫描15-45度角的QR码

时间:2017-08-01 19:00:11

标签: android rotation android-camera qr-code google-vision

我试图找出如何使用实时相机预览扫描具有15-45度方向的QR码进行解码。

我有一个我使用静态图像创建的样本,它只是在尝试解码图像之前将图像旋转通过预定义度数的数组。这有效,但我想使用实时预览而不是预先加载的图像来获得类似的结果。

我使用以下条形码API:https://developers.google.com/vision/android/barcodes-overview

使用预加载图像的工作样本

Frame frame = new Frame.Builder().setBitmap(myBitmap).build();
SparseArray<Barcode> barcodes = detector.detect(frame);
int[] angles = { 0, 15, 30, 45, 60, 90 };
int cacheAngle = 0;


    while(barcodes.size() == 0) {
        //try to get code

        try {
            for (int i = 0; i < angles.length; i++) {
                myBitmap = rotateImage(myBitmap, angles[i]);
                myImageView.setImageBitmap(myBitmap);
                myImageView.invalidate(); //re-draw image

                Log.d(TAG, "Trying angle: " + angles[i]);
                cacheAngle = i;
                updateConsole("Trying scan at angle: " + angles[i] + "...");
                frame = new Frame.Builder().setBitmap(myBitmap).build();
                barcodes = detector.detect(frame);

                if (barcodes.size() > 0) {
                    updateConsole("Barcode found at angle: " + angles[i]);
                    Log.d(TAG, "Hooray, barcode found: " + barcodes.valueAt(0).rawValue);
                    break;
                }
            }

            if(barcodes.size() == 0) {
                //failed to detect barcode during rotations
                updateConsole("Error: Failed to detect barcode!");
                updateConsole("[Reason] Image resolution may be too large, small or blurry!");
                break;
            }
        }
        catch(OutOfMemoryError e){
            updateConsole("Fatal Exception [Out Of Memory]");
            updateConsole("Can't decode bitmap, image is probably too large!");
            updateConsole("Angles tested before crash: ");
            for(int x=0; x<angles.length; x++){
                if(angles[x] <= cacheAngle){
                    updateConsole(angles[x] + " degrees");
                }
            }
            break;
        }
    }

实时预览条码捕获 - 无法处理面向15-45度的QR码

使用了此处的示例代码:https://code.tutsplus.com/tutorials/reading-qr-codes-using-the-mobile-vision-api--cms-24680

但是,我没有在API中找到允许我旋转相机尝试扫描代码的角度的任何内容。

感谢任何帮助。

0 个答案:

没有答案