我正面临着QR码检测的一个非常奇怪的问题。
TL; DR
简单地说,ZBar和ZXing都无法在许多图像中检测到QR码。
Example image。 (Mirror)。
在我的Mac上,我通过Brew安装了zbar
。我使用here中的JAR进行zxing
设置。两者都未能检测到示例图像中的QR码。 (注意:检测确实适用于许多其他图像;我在执行zbar或zxing时没有犯任何愚蠢的错误。)
但是,如果我打开手机上的“Barcode Scanner”应用并将其放在显示上述QR码的笔记本电脑屏幕前,应用会检测到它。另外,如果我在zxing.org上传上面的图片,它也会在那里检测到QR码。
可能出现什么问题?
长版
我有很多实际的纸张,上面印有有效的QR码(类似于上面的示例图片)。使用任何移动应用程序相机条形码扫描仪,可以在纸上直接检测到QR码。
接下来,我使用2台扫描仪以300 DPI扫描这些纸张:
输出格式为JPG(两个扫描仪的扫描仪软件中没有其他选项)。
当我在富士通扫描仪生成的任何图像上运行zbar(使用其ScanSnap软件扫描)时,始终检测到QR码。
当我对Brother扫描仪生成的图像运行zbar(或zxing)时,QR码检测非常受欢迎。
实际案例:我在Brother扫描仪上扫描了31张纸。图像为here(非G-Drive mirror,图像未触及)。然后我写了一个脚本来浏览每个图像并找到其中的QR码。脚本here。
脚本的完整输出是在pastebin here上生成的。
Brother扫描仪图像摘要:
Total number of images scanned: 31
Num images with ZBAR QR detected: 17
Num images ZBAR FAILED: 14
Num images with ZXING QR detected: 15
Num images ZXING FAILED: 16
您可以看到两种软件都没有检测到许多图像的QR码。对于某些图像,只有2个软件中的一个成功。对于许多其他图像,都成功。
05161801.JPG
是上面一组中的一张图片,两张软件都没有检测到。但上传到zxing.org的图像效果相同。我的手机上的条形码扫描仪应用程序还会检测笔记本电脑屏幕上的QR码以获取此图像。
提示
当使用富士通扫描仪扫描时,QR检测适用于同一张纸的事实告诉我,Brother扫描仪正在应用一些后处理,导致QR检测变得不确定(这仍然不能解释如何zxing.org适用于这些图像。我想知道imagemagick是否可以用来以某种方式使图像与ZBar一起工作。我尝试用Fred's textcleaner
脚本做一些“增强”。我还没能破解它。
我花了很多时间试图解决这个问题。我将不胜感激任何意见,建议或解决方案。谢谢!
更新:添加使用富士通扫描仪扫描的相同纸张的图像
您可以从here下载未触动的图片。
我在这些富士通图像上运行了barcode_checker.py
脚本(与上面相同)。如前所述,QR码在每个单一图像中被检测到! (ZXING确实失败了一些,但ZBAR 100%成功)
脚本的完整输出是在pastebin here上生成的。
Brother扫描仪图像摘要:
Total number of images scanned: 31
Num images with ZBAR QR detected: 31
Num images ZBAR FAILED: 0
Num images with ZXING QR detected: 26
Num images ZXING FAILED: 5
答案 0 :(得分:0)
我检查了您的代码,您似乎没有对图像应用任何图像处理或清理?你能准确说明你试过的吗?
只是部分答案,但没有人说答案必须完整。也许我知道35%的故事和一些聪明的灵魂知道其他65% - 你在读Fred(@ fmw42)吗?
好的,我选择了(希望匹配的)一对图像:
并使用 ImageMagick 的identify -verbose IMAGE.JPG
工具对其进行分析,并对输出产生差异。
它们非常密切相关,除非标有红色。我看到Brother扫描中的熵一直较低,JPEG质量未指定(?),文件大小减少了约35%。
也许弗雷德,或埃里克或其他一些善良的人有一些见解。我会继续寻找更多的想法,并在我发生任何新的事情时更新我的帖子。