我正在研究一个从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++;
}
非常感谢任何帮助!谢谢!
答案 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 ......等等