Java 从图像中检测并解码多个2d(数据矩阵、QRcode)

Java 从图像中检测并解码多个2d(数据矩阵、QRcode),java,barcode,decode,qr-code,zxing,Java,Barcode,Decode,Qr Code,Zxing,我正在做一个项目,其中包括在我的桌面上输入一个图像文件,然后检测和解码所有存在的条形码,包括一维和二维条形码 我一直与zxing合作,在GenericMultipleBarcodeReader的帮助下,我能够从图像中读取多个1D条形码。但是,它无法检测二维条形码。 但是,如果我裁剪二维条形码并单独输入裁剪的部分,它将检测并解码它,而不会出现任何问题 因此,如果我的图像有2个1D条形码和一个2D条形码,我的输出只包括解码的2个1D条形码 我也尝试过使用ByQuadrantReader,但也不起作用

我正在做一个项目,其中包括在我的桌面上输入一个图像文件,然后检测和解码所有存在的条形码,包括一维和二维条形码

我一直与zxing合作,在GenericMultipleBarcodeReader的帮助下,我能够从图像中读取多个1D条形码。但是,它无法检测二维条形码。 但是,如果我裁剪二维条形码并单独输入裁剪的部分,它将检测并解码它,而不会出现任何问题

因此,如果我的图像有2个1D条形码和一个2D条形码,我的输出只包括解码的2个1D条形码

我也尝试过使用ByQuadrantReader,但也不起作用

我的代码:

LuminanceSource source = new BufferedImageLuminanceSource(image); 
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); 
Result[] result; 
HashMap<DecodeHintType,Object> hints = new HashMap<>(); 
hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE); 
    try 
    { 
result = new GenericMultipleBarcodeReader(new MultiFormatReader()).decodeMultiple(bitmap, hints); 
     } 
    catch (ReaderException re) 
    {
    return re.toString(); 
    } 
    List<String> strings = new ArrayList<String>();
     for (Result r: result)
    {
    strings.add(r.getText()); 
    } 
    return String.valueOf(Arrays.toString(strings.toArray()));
LuminanceSource source=新的缓冲区图像亮度源(图像);
BinaryBitmap位图=新的BinaryBitmap(新的混合二进制程序(源));
结果[]结果;
HashMap提示=新建HashMap();
put(DecodeHintType.TRY_,Boolean.TRUE);
尝试
{ 
结果=新的GenericMultipleBarcodeReader(新的MultiFormatReader()).decodeMultiple(位图、提示);
} 
捕获(ReaderException re)
{
返回re.toString();
} 
列表字符串=新的ArrayList();
for(结果r:结果)
{
add(r.getText());
} 
返回String.valueOf(Arrays.toString(strings.toArray());

有人能告诉我一种方法吗?

二维码可以在图像的任何位置找到,但数据矩阵必须位于图像的中心才能找到。这就是为什么裁剪图像时它会工作。

@Skippy
LuminanceSource=new BufferedImageLuminanceSource(图像);BinaryBitmap位图=新的BinaryBitmap(新的混合二进制程序(源));结果[]结果;HashMap提示=新建HashMap();put(DecodeHintType.TRY_,Boolean.TRUE);请尝试{result=new GenericMultipleBarcodeReader(new multiformatrader()).decodeMultiple(位图、提示);}catch(ReaderException re){return re.toString();}List strings=new ArrayList();for(Result r:Result){strings.add(r.getText());}返回String.valueOf(Arrays.toString(strings.toArray())很抱歉格式不好。我是新来的,还没有弄清楚如何在这里格式化代码。@Skippy感谢您提供的格式化链接,将等待您对代码的帮助。@Skippy有没有办法让某个人回答问题?有没有办法从图像中的任何位置读取数据矩阵?以某种方式更改代码?我看到两个不同的在线条形码阅读器可以做到这一点,但它们不是开源的。还有什么方法可以标记解码后的条形码?比如在图像中画一个彩色的矩形来显示那些是被检测和解码的条形码?这样我就可以分辨出哪一组条形码没有被解码!嗨,我真的需要帮助。我进一步尝试了,但什么也想不出来。如果可能的话,你能帮我一下吗?