当没有读取带有URL的QR码时,zxing QRCodeReader中的ChecksumException

如果我使用URL扫描QR码,以下代码可以完美而快速地运行。 但是,如果我使用简单的字符串或数字序列解码QR码(这是我想要做的),它有时会随机工作,但99%的时间它会因ChecksumException而失败。

if (webcam.isOpen()) { if ((image = webcam.getImage()) == null) { continue; } LuminanceSource source = new BufferedImageLuminanceSource(image); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); try { result = new QRCodeReader().decode(bitmap); } catch (NotFoundException e) { //exception handling omitted } catch (ChecksumException ex) { //exception handling omitted } catch (FormatException ex) { //exception handling omitted } } 

以前有人经历过这个吗? 可能是什么解决方案?

顺便说一句,我正在使用http://goqr.me/生成代码

这个问题实际上有点误导。 数字序列失败的简单qr代码的原因是它们的模式更大,因为代码包含的信息较少。 URL QR码具有更多信息,因此具有更高的分辨率和更小的“模式”。 问题的根源是我正在测试的网络摄像头对焦点问题(或色差,我不知道)非常敏感,因此低分辨率的QR码必须远离网络摄像头才能被读取以便阅读正确,比URL QR码…这个问题只有我的开发PC的华硕网络摄像头,我试过的所有其他网络摄像头基本上使用我所有的测试二维码。

ChecksumException通常意味着它开始正确解码,但QR码的编码无效。 它可能表明QR码的创建方式存在问题,特别是如果它始终如一。

但是你链接到这里的二维码看起来还不错,因为它解码很好:

http://zxing.org/w/decode?u=http%3A%2F%2Fapi.qrserver.com%2Fv1%2Fcreate-qr-code%2F%3Fdata%3D12345%26size%3D250x250 http://zxing.org /w/decode?u=http%3A%2F%2Fgoqrme.remotefile.net%2Fimg%2Fact%2Fqrcode_generator%2Fqr_default.png

它还可以使用条形码扫描仪立即扫描。 两者都来自zxing。

我想知道你是否正在翻转图像 – 或者,而不是不翻转网络摄像头通常给你的翻转图像。