Ocr 如何将IplImage转换为lept.PIX

Ocr 如何将IplImage转换为lept.PIX,ocr,tesseract,javacv,Ocr,Tesseract,Javacv,我开发了基于JavaCV的OCR系统 我在项目中使用以下库: 在一个例子中,我需要找到图像的某些部分并识别上面的字母 我以IplImage类型存储图像的一部分 但对于Tesseract,我必须使用PIX格式 如何将IplImage转换为Pix IplImage prepareImg = ... cvSaveImage("test.jpg", prepareImg); PIX pixImage = pixRead("/test.jpg"); ---资料来源:

我开发了基于JavaCV的OCR系统

我在项目中使用以下库:

在一个例子中,我需要找到图像的某些部分并识别上面的字母

我以IplImage类型存储图像的一部分

但对于Tesseract,我必须使用PIX格式

如何将IplImage转换为Pix

IplImage prepareImg = ...
cvSaveImage("test.jpg", prepareImg);               
PIX pixImage = pixRead("/test.jpg");
---资料来源:
如rajind ruparathna发表的评论所述,该问题的作者找到了类似黑客的解决方案。也可以找到它

由此,您可以将IplImage转换为BuffereImage,如下所示

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;
}

是否有一个设计问题阻止你将图像直接作为PIX读取?@goodbytes,问题的作者发现了一个漏洞。
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;
}