我正在研究一个从png文件读取条形码的程序。我从(在x轴上)开始确定5个像素,在该位置确定条形码从图像中开始。我将1分配给黑线,将0分配给白线,并将每行的值放入数组中。与所有条形码一样,它以黑线,白线和另一黑线开头。这意味着前3个数字应为101。但是事实并非如此。 Here is a link to the image
这是代码(我在条形码的中间水平阅读:

int q = 0;
for (i = 5; i < barcodeImage.getWidth()-5; i++) {

    colorState = barcodeImage.getRed(i,middle);
    //System.out.println(colorState);
    if (colorState == 255) {
        num[q] = 0;
    }
    if (colorState == 0) {
        num[q] = 1;
    }
    q++;
}


任何帮助都非常感谢!谢谢!

最佳答案

您链接的图像的垂直线为两个像素宽。

如果您扫描整个.png:

public static void main(String[] args) throws IOException {
    BufferedImage barcodeImage = ImageIO.read(new File("src/barcode1.png"));
    int middle = barcodeImage.getHeight()/2;
    for (int i = 0; i < barcodeImage.getWidth(); i++) {
        System.out.println(barcodeImage.getRGB(i, middle));
    }
}


您可以看到像素为w,w,w,w,w,b,b,w,w,b,b,w,w,w,w,b,b,b,b ...等

10-06 15:30