【问题标题】:Use Zxing Library on PreviewFrame for Augmented Reality在 PreviewFrame 上使用 Zxing 库进行增强现实
【发布时间】:2023-10-23 10:21:01
【问题描述】:

谁能告诉我如何将 Zxing 库用于增强现实应用程序?我知道使用 Zxing 最简单的方法是通过 Intent,但我需要 Camera View,所以我不能使用条形码应用程序。

我有一个SurfaceHolder.Callback,它被添加到主活动并覆盖以下方法:

@Override
public void surfaceCreated(SurfaceHolder holder) {
    mCamera = Camera.open();

    try {
        mCamera.setPreviewDisplay(holder);
    } catch (IOException e) {
        Log.d(TAG, "Can not set surface holder");
    }

    mCamera.startPreview();

    Parameters parameters = mCamera.getParameters();
    parameters.setPreviewSize(1280, 720);
    parameters.setPictureSize(1280, 720);
    mCamera.setParameters(parameters);

    QrCodeReader reader = new QrCodeReader();
    mCamera.setPreviewCallback(reader);
}

设置的图片大小必须可用,因为它在列表parameters.getSupportedPictureSizes()中。

而在实现PreviewCallbackQrCodeReader类中的这个方法:

private Result result;
private MultiFormatReader reader = new MultiFormatReader();
private boolean init = false;

public QrCodeReader(){
        Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType,
              Object>();
    hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
    reader.setHints(hints);
}

@Override
public void onPreviewFrame(byte[] data, Camera camera) {
    PlanarYUVLuminanceSource source = new PlanarYUVLuminanceSource(data,
          1280, 720, 0, 0, 1280, 720, true);
    HybridBinarizer hybBin = new HybridBinarizer(source);
    BinaryBitmap bitmap = new BinaryBitmap(hybBin);

try {
        result = reader.decodeWithState(bitmap);
        Log.d("Result", "Result found!");
    } catch (NotFoundException e) {
        Log.d(TAG, "NotFoundException");
    } finally {
        reader.reset();
    }
}

Logcat 只显示NotFoundException

【问题讨论】:

  • 条码扫描器ZXING与增强现实有什么关系?
  • 我或多或少需要 QR 码作为实时显示 3D 对象和信息的标记。
  • 这种情况下可能需要下载源码并尝试提取二维码检测。
  • 哦,对不起,我忘了说我已经这样做了。行reader.decode(bitmap)调用Zxing的二维码检测。

标签: java android augmented-reality zxing


【解决方案1】:

NotFoundException 正常。如果框架没有条形码,那就是结果。这并不意味着任何事情本身都是错误的。继续扫描。

【讨论】:

  • 是的,确实如此,但只要我继续扫描,任何时候都没有结果。我打印了一个很大的二维码,但仍然没有结果......
  • 上面的解决方案现在有效!谢谢您的回答!有一个愚蠢的错误。我只需要切换图片参数。