Java中的条形码读取无法正确读取像素

时间:2014-03-07 21:37:44

标签: java image image-processing barcode

我正在研究一个从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++;
}

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

1 个答案:

答案 0 :(得分:2)

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

如果你扫描整个.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 ......等等