如何在MatLab中改进解码QR码的代码?

时间:2017-12-18 20:53:29

标签: java matlab qr-code zxing

我正在使用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在线解码器相同的功能?

enter image description here

1 个答案:

答案 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内的正确版本下编译它们。但是,我们不要对此进行太多讨论,因为在演示时我们不知道你是否会偶然发现这类问题。