2016-04-28 14 views
5

Sviluppo un sistema OCR basato su JavaCV.Come convertire IplImage in lept.PIX

io uso seguenti librerie per il mio progetto:

In un caso ho bisogno di trovare una parte di un'immagine e riconoscere le lettere su di esso.

Memorizzo una parte di un'immagine nel tipo IplImage.

Ma per Tesseract devo usare il formato PIX.

Come convertire IplImage in Pix?

+0

http://stackoverflow.com/a/8126992/2836621 –

+0

Esiste un problema di progettazione che ti impedisce di leggere l'immagine direttamente come PIX? –

+0

@goodbytes, l'autore della domanda ha trovato un trucco. https://github.com/bytedeco/javacpp-presets/issues/224 –

risposta

1
IplImage prepareImg = ... 
cvSaveImage("test.jpg", prepareImg);    
PIX pixImage = pixRead("/test.jpg"); 

--- Fonte: Same Github issues Come accennato da un commento di rajind ruparathna

3

Distacco l'hack come soluzione trovata dall'autore della questione. Può anche essere trovato here.

IplImage prepareImg = ... 
cvSaveImage("plate.jpg", prepareImg);    
PIX pixImage = pixRead("/plate.jpg"); 

E da questo question, è possibile convertire IplImage a BufferedImage come segue.

public static BufferedImage toBufferedImage(IplImage src) { 
    OpenCVFrameConverter.ToIplImage iplConverter = new OpenCVFrameConverter.ToIplImage(); 
    Java2DFrameConverter bimConverter = new Java2DFrameConverter(); 
    Frame frame = iplConverter.convert(src); 
    BufferedImage img = bimConverter. convert(frame); 
    BufferedImage result = (BufferedImage)img.getScaledInstance(
     img.getWidth(), img.getHeight(), java.awt.Image.SCALE_DEFAULT); 
    img.flush(); 
    return result; 
}