Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ZXing库无法解码Datamatrix条形码_Java_Opencv_Zxing_Datamatrix - Fatal编程技术网

Java ZXing库无法解码Datamatrix条形码

Java ZXing库无法解码Datamatrix条形码,java,opencv,zxing,datamatrix,Java,Opencv,Zxing,Datamatrix,我正在尝试使用ZXing库来解码Datamatrix条形码。以下是我的代码示例: BufferedImage bi = img.getBufferedImage(); Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>(); hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE); LuminanceSource s

我正在尝试使用ZXing库来解码Datamatrix条形码。以下是我的代码示例:

BufferedImage bi = img.getBufferedImage();

Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);

LuminanceSource source = new BufferedImageLuminanceSource(bi);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
DataMatrixReader dataMatrixReader = new DataMatrixReader();

try {
    Result res = dataMatrixReader.decode(bitmap,hints);
    System.out.println("resultText = "+res.getText());
} catch (Exception e) {
    System.out.println("failed to get resultText");
    e.printStackTrace();
}
我在accross和其他网站上多次看到几乎相同的样本,但这种方法在这种形式下对我不起作用

作为一个来源,我使用的是从红外摄像机抓取的图像。以下是示例图像: 正如您所看到的,条形码几乎完全位于图像的中心,这是推荐和推荐的。如果我以编程方式将此图像转换为黑白图像,并将裁剪图像转换为仅带有一些空格的绑定条形码,那么ZXing可以完美地处理这样的图像。但问题是现实中的条形码几乎没有变形,所以我的简单算法不能帮助我正确裁剪图像。更多的条形码可能不会精确地放置在图像的中心,而cold的亮度略有不同。我看到一些线程提到了OpenCV的功能,可以找到speciects对象在图像上的位置,比如,但是它们已经很旧了。从那以后有什么变化吗?在我的具体情况下,我还应该考虑写100%个可靠的数据矩阵解码器和检测器?

我决定提供由相应对象的.toString文本输出组成的亮度源和二进制位图图像,以供参考:

和/65z0vlbpl/Luminance_Source.png位于同一域。它们看起来不错,可以解码了,但是解码有什么问题呢


在所有这些图像和类似的图像被智能手机软件很好地识别和解码之后,我只想获得相同的结果。

您需要通过编程或手动设置来启用它

在DecodeThread.java类中,您可以看到启用数据矩阵编码的行

decodeFormats.addAll(DecodeFormatManager.DATA_MATRIX_FORMATS);

您需要以编程方式或手动方式从设置中启用它

在DecodeThread.java类中,您可以看到启用数据矩阵编码的行

decodeFormats.addAll(DecodeFormatManager.DATA_MATRIX_FORMATS);

链接:如果你认为它是相关的,请考虑修复它。链接:如果你认为它是相关的,请考虑修复它。正如我提到的,一些图像在一些转换之后被解码。所以原因不可能是因为解码被禁用。正如我提到的,一些图像经过一些转换后解码得很好。因此,原因不可能是解码被禁用