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を取りました:
- 3x3 マスクでイメージを侵食します。
- 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

