从图像中检测并解码多个2d(Datamatrix,QRcode)

我正在开展一个项目,包括将图像文件作为输入放在我的桌面上,然后检测和解码所有存在的条形码,包括1D和2D。

我一直在使用zxing,在GenericMultipleBarcodeReader的帮助下,我能够从图像中读取多个1D条形码。 但是,它无法检测到二维条形码。 但是,如果我裁剪2D条形码并分别输入这个裁剪部分,它会检测并解码它没有任何问题。

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

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

我的代码:

LuminanceSource source = new BufferedImageLuminanceSource(image); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Result[] result; HashMap 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 strings = new ArrayList(); for (Result r: result) { strings.add(r.getText()); } return String.valueOf(Arrays.toString(strings.toArray())); 

谁有人告诉我这样做的方法?

QR码可以在图像中的任何位置找到,但数据矩阵必须位于要找到的图像的中心。 这就是裁剪图像时它的工作原理。