我正在使用wrap-up package Zxing's code来解码MatLab中的QR码。我有300张带QR码的图像,但只能读取300张中的120张。当我尝试Zxing's decode site时,可以读取更多代码。我搜索了一下,将我在MatLab中使用的代码与Zxing GitHub source code中的代码进行了比较。我发现代码有点不同,如下所示。有人还建议这种改变会有所不同(here)。 (我想它只是在new
之前添加BufferedImageLuminanceSource
。对吗?)
我不知道Java。所以我问我如何改进MatLab中的以下步骤?我也在Zxing的源代码中看到,它使用了许多不同的方法来尝试读取代码。如何将其添加到我的MatLab代码中?如果做太多工作,有人可以建议我一个链接,以便我自己可以学习如何改进它吗?
来自ExchangeFile for MatLab:
jimg = im2java2d(img);
source = BufferedImageLuminanceSource(jimg);
bitmap = BinaryBitmap(HybridBinarizer(source));
来自Zxing的代码:
private static void processImage(BufferedImage image,
HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new GlobalHistogramBinarizer(source));
Collection<Result> results = new ArrayList<>(1);
我不知道从Zxing的GitHub和FileExchange中输入代码是否正确。所以,如果这样做是不对的,请告诉我。谢谢你!
修改
也许我的问题不是那么清楚。总结一下我的问题:我发现一些QR图像无法在MatLab的包装脚本中解码,但可以在Zxing在线解码器中读取。可能是造成不同结果的原因,因为MatLab中的包装脚本使用与Zxing在线解码器相同的功能?
答案 0 :(得分:0)
来自this page:
只需要一个JAR?
如果您只需要预先构建的JAR文件,则始终可以找到已编译的文件 来自Maven release repository的资源,包括最近的资源 快照/每晚构建。
按照上述链接,您应该可以下载运行jar
所需的ZXing
个包。您在Mathworks File Exchange
上找到的包装器脚本也指向同一方向,查看test_qr.m
文件顶部的注释:
%请从zxing%下载并构建zxing%的核心和javase部分 在这里 - http://code.google.com/p/zxing/
自Google Code
关闭以来,原始链接已失效,但它会将您重定向到相同的GitHub
存储库。
获得jar
个文件后,将它们与属于该脚本的Matlab
个文件一起放入一个文件夹中。确保javaaddpath
中的test_qr.m
指令正确指向jar
个包,并且您应该拥有使脚本正常工作的所有内容。
如果您下载的jar
文件的编译版本与Matlab安装使用的版本不同(要检查此命令只是从命令窗口运行命令version -java
),事情会变得多更复杂,因为您必须下载ZXing
的源文件,并在Java IDE
Eclipse
内的正确版本下编译它们。但是,我们不要对此进行太多讨论,因为在演示时我们不知道你是否会偶然发现这类问题。