未定义函数或变量 'BufferedImageLuminanceSource'

Undefined function or variable 'BufferedImageLuminanceSource'

我最近使用 this FEX submission 中的 decode_qr 来解码我的二维码。 运行 一两个星期前还不错,但今天它对我产生了一个错误:

Undefined function or variable 'BufferedImageLuminanceSource'
Error in decode_qr (line 34);
source = BufferedImageLuminanceSource(jig);

刚刚查看了zxing repository,发现有些文件几天前更新了。所以我猜从包中导入的一些文件的路径已经改变了。

这是从 decode_qr 函数导入的代码:

import com.google.zxing.qrcode.*;
import com.google.zxing.client.j2se.*;
import com.google.zxing.*;
import com.google.zxing.common.*;
import com.google.zxing.Result.*;

我怎样才能让它重新工作?我需要更改导入路径吗?

这是我为使其正常工作所做的工作(Win 10 x64、R2017b、ZXing 3.3.1):

  1. 已从 Sonatype 下载最新的预构建 .jar 工件:

  2. 使用 javaaddpath:

    将文件添加到我的动态 java 类路径
    javaaddpath('G:\core-3.3.1.jar');
    javaaddpath('G:\javase-3.3.1.jar');
    % Verify using: javaclasspath('-dynamic');
    

    Note:

    To add folders to the static path, which MATLAB loads at startup, create a javaclasspath.txt file, as described in Static Path.

  3. 使用 unitag.io 生成了一些示例 QR 码:

  4. 尝试使用 Lior Shapira 的 decode_qr 对其进行解码:

    >> out = decode_qr(qr)
    out =
    
        'https://whosebug.com/users/3372061/dev-il'
    

完整代码:

function out = q47223578()

javaaddpath('G:\core-3.3.1.jar');
javaaddpath('G:\javase-3.3.1.jar');
% Verify using: javaclasspath('-dynamic');

qr = imread('https://i.stack.imgur.com/mA4eP.png');

out = decode_qr(qr);