2015-01-23 2 views
1

Мне нужно прочитать штрих-код 2D-матрицы данных из изображения. Я использую zxing для чтения штрих-кода. Это код, который я использую.Не удалось прочитать матрицу 2D-данных в изображении

import java.awt.image.BufferedImage; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import javax.imageio.ImageIO; 
import com.google.zxing.BinaryBitmap; 
import com.google.zxing.ChecksumException; 
import com.google.zxing.FormatException; 
import com.google.zxing.LuminanceSource; 
import com.google.zxing.MultiFormatReader; 
import com.google.zxing.NotFoundException; 
import com.google.zxing.Reader; 
import com.google.zxing.Result; 
import com.google.zxing.client.j2se.BufferedImageLuminanceSource; 
import com.google.zxing.common.HybridBinarizer; 

public class BarcodeGeneration { 

    public static void main(String[] args) throws IOException { 
     InputStream barCodeInputStream = new FileInputStream("file.jpg"); 
     BufferedImage barCodeBufferedImage = ImageIO.read(barCodeInputStream); 
     LuminanceSource source = new BufferedImageLuminanceSource(barCodeBufferedImage); 
     BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); 
     Reader reader = new MultiFormatReader(); 
     Result result; 
     try { 
      result = reader.decode(bitmap); 
      System.out.println("Barcode text is " + result.getText()); 
     } catch (NotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (ChecksumException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (FormatException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 


    } 

} 

Проблема в том, что я не получаю вывод для всех изображений. Я загрузил изображение из сети, которое работает нормально. Но для фактического входного изображения я получаю исключение «com.google.zxing.NotFoundException», хотя у него есть данные. Может ли кто-нибудь помочь преодолеть эту проблему или дать альтернативное решение для чтения 2D-матрицы данных.!

Благодаря

Изображения: и

+0

Не могли бы вы рассказать, где и как .. –

+0

[url = http: //postimage.org/] [img] http://s2.postimg.org/cauiszrvp/file.png [/ img] [/ url ] [url = http: //postimage.org/] [img] http://s2.postimg.org/8fr4qf8px/Img16.png [/ img] [/ url] –

ответ

0

Its, потому что 2d матрица не находится в центре извлеченного изображения. Поэтому я изменил размер изображения с помощью класса Image, после чего он сработал.