3

Zxing を使用して Aztec コードをデコードしようとしています。

SO answerのコードを使用します。その一部を次に示します。

public static String readQRCode(String filePath, String charset, Map hintMap)
        throws FileNotFoundException, IOException, NotFoundException {
    BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(
            new BufferedImageLuminanceSource(
                    ImageIO.read(new FileInputStream(filePath)))));
    Result qrCodeResult = new MultiFormatReader().decode(binaryBitmap,
            hintMap);
    return qrCodeResult.getText();
}

上記のコードでそれらの画像を読み取ろうとします:

ここに画像の説明を入力

しかし、これは失敗します:

Exception in thread "main" com.google.zxing.NotFoundException

私は言った-わかりました、多分それは低品質です-それで私はGIMPを取りました:

  1. 3x3 マスクでイメージを侵食します。
  2. gimp の自動しきい値処理を行います (画像を 2 値化します)。

その単純な前処理により、次のことがわかりました。

ここに画像の説明を入力

画質は良くないかもしれませんが、単純に白黒です。いいえ、まだ取得しています:

Exception in thread "main" com.google.zxing.NotFoundException

奇妙なことに、ほとんどすべてのバーコード リーダーが問題なく両方を読み取ります。例: NeoReader (Android - 携帯電話) は、ラップトップの画面から両方を読み取ります - 正しく!

Wiki からのこのような完全に明確な画像が、このコードによって正しく認識されることを追加したいと思います。

質問:

上記のコードの何が問題になっていますか?

このアステカ暗号を解読する方法は? 任意の前処理を行うことができますが、どのような手順が必要ですか?

助けてください。

プロジェクトの詳細: Java 8、com.google.zxing:core:3.2.1、com.google.zxing:javase:3.2.1

4

1 に答える 1