我正在研究一个从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 ...等