从照片中检测QR码的问题

时间:2016-12-12 11:42:24

标签: android barcode

我想要做的事情:用相机搜索QR码,在检测到QR码时拍下照片,然后再扫描一下图片,找到图片中QR码的位置。我知道我可以从surfaceview中的surfaceholder获取QR码的位置,但是因为我需要根据QR码位置从图像中提取更多数据,我需要获取图像并再次在其上运行检测器

问题:在检测到并拍摄了QR码后,第二次“扫描”没有检测到图像中的QR码。

我的代码

barcodeDetector = new BarcodeDetector.Builder(this)
                    .setBarcodeFormats(Barcode.QR_CODE)
                    .build();

cameraSource = new CameraSource
            .Builder(this, barcodeDetector)
            .setRequestedPreviewSize(1794, 1080)
            .setAutoFocusEnabled(true)
            .build();

当检测到QR码时,运行该方法拍摄QR码的图片

cameraSource.takePicture(null, new CameraSource.PictureCallback() {
        @Override
        public void onPictureTaken(byte[] bytes) {

            bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);

            detectorOnBitMap();
        }
    });

将字节数组转换为位图后,将调用以下方法

    public void detectorOnBitMap() {

    Frame frame = new Frame.Builder().setBitmap(bmp).build();

    colorview.setImageBitmap(frame.getBitmap());

    SparseArray<Barcode> barcodesTRUE = barcodeDetector.detect(frame);

    if (barcodesTRUE.size() != 0) {
        Log.d("TAG", "Found QR-code");


    } else {
        Log.d("Tag", "Did not find QR-code");
    }
}

但不知何故,探测器在位图中找不到QR码。为什么?尝试在Imageview中显示位图,图片看起来应该如此。尝试将其保存到jpeg / png,然后在加载有效的图像后扫描它,但仅在压缩位图之后。将字节数组转换为位图时,我做错了吗?

提前致谢!

0 个答案:

没有答案