Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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未发现异常_Java_Image Processing_Barcode_Zxing_Aztec Barcode - Fatal编程技术网

Java Zxing未发现异常

Java Zxing未发现异常,java,image-processing,barcode,zxing,aztec-barcode,Java,Image Processing,Barcode,Zxing,Aztec Barcode,我试着用Zxing来解码阿兹特克代码 我使用的代码来自。 以下是其中的一部分: public static String readQRCode(String filePath, String charset, Map hintMap) throws FileNotFoundException, IOException, NotFoundException { BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBi

我试着用Zxing来解码阿兹特克代码

我使用的代码来自。 以下是其中的一部分:

public static String readQRCode(String filePath, String charset, Map hintMap)
        throws FileNotFoundException, IOException, NotFoundException {
    BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(
            new BufferedImageLuminanceSource(
                    ImageIO.read(new FileInputStream(filePath)))));
    Result qrCodeResult = new MultiFormatReader().decode(binaryBitmap,
            hintMap);
    return qrCodeResult.getText();
}
我试图通过上面的代码来阅读这些图像:

但这在以下方面失败:

Exception in thread "main" com.google.zxing.NotFoundException
我说-好吧,也许质量太低了-所以我拿了GIMP:

  • 用3x3掩模腐蚀图像
  • 采取自动gimp阈值(二值化图像) 这个简单的预处理给了我这个:

    也许它的质量不太好,但它只是黑白色的——更好吗?没有。我仍然获得:

    Exception in thread "main" com.google.zxing.NotFoundException
    
    奇怪的是:几乎所有的条形码阅读器都能毫无问题地读取这两种条形码。例如:NeoReader(Android手机)可以从笔记本电脑的屏幕上正确地读取这两种数据

    我想补充一点,绝对清晰的图像,比如,都能被代码正确识别

    问题:

    上面的代码有什么问题

    如何解码这个阿兹特克代码?我可以做任何预处理,但需要什么步骤

    请帮忙


    项目详细信息:Java8,com.google.zxing:core:3.2.1,com.google.zxing:javase:3.2.1

    请不要使用jpg文件,因为您会丢失一些重要信息。使用无损压缩文件格式,如bmp或png

    我仍然无法用zxing阅读此代码,但另一个网页:在预处理后阅读:

  • 仅将图像裁剪到aztec代码:
  • 创建统一的点阵列(83行83列),并围绕每个点(中心=计算点,半径=4)画小圆:
  • 创建大小为83x83的矩阵,并将每个矩阵单元的值设置为对应圆中的图像平均值。结果是:
  • 使用简单阈值(如果值<114,则为0,否则为255),并将此图像保存为安静区和模块大小为4:
  • 我不知道为什么在线zxing阅读器不阅读这段代码(可能有太多错误,您应该对上面的算法进行一点改进)

    预处理非常简单,因此您可以使用任何开源图像处理库,例如OpenCV。(我使用了AdaptiveVisionStudio(精简版应该足够了))

    使用上述在线aztec阅读器,我收到:

    Mamaapzcaeeabr8yajkamx8kmaaa1ap98afaaugbfaftakara7/tgbuacatad8algptal5ud1f3bliavvov+5oflxfklau0xeddaefl3eqf06qbmt38jd0karh/fThpaAb1DHiDu/jbowaauci0k1g1gizy43oj9d7sjqkwtfx2+zvalthcpzv2vab8g8gtrzzwwwhtb73vgbgor8ygjguern63ajjjkan25lnbv93/zgalwfyqlwfy5fyqfy5d5tbg5tbg8jjjjjjjjj8vc8vc8vc8vc8jj8jjjjjjjjjjjj8vc8vc8vc8vc8vc8jIHrw0AvQrXwSPXfyBSgjQ/CQWWJ7UANE1NSN9OQA3G0NHD70YN8DV3SM4ADEDI7SZNIZBLD8WH2VU/UIO1HGKYPAJYHL7WYYJBOKCNB1ZYYYW7HTO5ZNLSDD77UANE7AN2GAF7ARJFMN8IVXSWS3C1KYVBJE+NSNB8ANN6ZPWB7IZJ7IZJ7IZJ7ZIZJ7ZJ7ZATQHAMANSOHJJJJJJJJJJJJJJJ7/w=M


    谢谢你的回复。稍后我将尝试您的预处理想法。它并不能解决整个问题,因为我仍然需要假设一些列/行编号。但这没关系,我想我可以处理它——在我的项目中,我甚至可以简单地把整个过程做几次(比如表单值80-85)。我真的很感谢你的工作-谢谢。你的解决方案在中兴有效!至少对于上面的示例图像。在线Zxing只有在通过URL传递图像(而不是文件)后才能成功解码。这里是输出:明天我将检查这个图像是否也被ZXingJava库解码。非常感谢。您能解释一下如何从第三步实现最终效果吗?@ZZ5在第三步中,我们有尺寸为83x83px的基于灰度的图像,因此您必须检查每个像素的灰度值是否小于114(在本例中,114给出了很好的结果)。若小于,那个么在最后一个矩阵中,你们可以放置黑色像素,否则是白色像素。使用谷歌阅读更多关于图像阈值的信息。@ZZ5不幸的是,我没有看到你的代码,所以我帮不了你。如果你想看看我的解决方案,这里是它(根据我的帖子,我对它做了一些修改):。要打开Program.avlite文件,应下载“Adaptive Vision Studio 4.3 Lite”。我认为它应该可以帮助您用任何其他语言(如Java/c++)编写解决方案。