我正在使用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在线解码器相同的功能?
来自this page:
只需要一个JAR?
如果您只需要预先构建的JAR文件,则始终可以从Maven release repository中找到已编译的资源,包括最近的快照/每晚构建。
按照上述链接,您应该能够下载运行jar
所需的ZXing
包。您在Mathworks File Exchange
上找到的包装器脚本也指向同一个方向,查看位于test_qr.m
文件顶部的注释:
%请从这里下载并构建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
中以适当的版本编译它们。但是,我们不要对此进行太多讨论,因为在演示时我们不知道你是否会偶然发现这类问题。