扫描,检测和解码图像中的UPC代码

时间:2014-06-12 20:47:47

标签: java barcode decode zxing detect

我正在进行Android开发,一旦我从Google Glass框架获得字节数组,我就会尝试使用Zxing库扫描数组并尝试检测1d条形码(UPC代码)。 我试过这段代码。

BufferedImage image = ImageIO.read(game);
BufferedImageLuminanceSource bils = new BufferedImageLuminanceSource(image);
HybridBinarizer hb = new HybridBinarizer(bils);
BitMatrix bm = **hb.getBlackMatrix();**
MultiDetector detector = new MultiDetector(bm);
DetectorResult dResult = detector.detect();
if(dResult == null)
{
    System.out.println("Image does not contain any barcode");
}
else
{
    BitMatrix QRImageData = dResult.getBits();
    Decoder decoder = new Decoder();
    DecoderResult decoderResult = decoder.decode(QRImageData);
    String QRString = decoderResult.getText();
    System.out.println(QRString);
} 

它适用于QRcode,可以很好地检测和解码QR码。但是没有检测到UPC代码。

我也试过这段代码,

InputStream barCodeInputStream = new FileInputStream(game);
BufferedImage barCodeBufferedImage = ImageIO.read(barCodeInputStream);
BufferedImage image = ImageIO.read(game);
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new GlobalHistogramBinarizer(source));
RSSExpandedReader rssExpandedReader = new RSSExpandedReader();
int rowNumber = bitmap.getHeight()/2;
BitArray row = **bitmap.getBlackRow(0, null);**
Result theResult = rssExpandedReader.decodeRow(rowNumber, row, new Hashtable());

并且两者都得到"线程中的异常" main" com.google.zxing.NotFoundException" 即可。

有谁知道如何解决这个问题?

getBlackMatrix() - 将亮度数据的2D数组转换为1位。如上所述,假设此方法很昂贵,并且不会重复调用它。此方法用于解码2D条形码,可能会也可能不会应用锐化。因此,此矩阵中的一行可能与使用getBlackRow()获取的行不同,因此不要在它们之间进行混合和匹配。

getBlackRow() - 将一行亮度数据转换为1位数据。实际上可以进行转换,或返回缓存数据。呼叫者应该假设这种方法很昂贵并尽可能少地称之为。此方法用于解码1D条形码,可以选择应用锐化。

0 个答案:

没有答案