2

我目前正在编写一个需要在其中使用 OCR 的 Android 应用程序。

为了实现这一点,我将 Tesseract 与tesseract-android-tools 项目结合使用。

我已经设法让 Tesseract API 进行初始化,并且需要使用以下 setImage 函数:

void com.googlecode.tesseract.android.TessBaseAPI.setImage(byte[] imagedata, int width, int height, int bpp, int bpl)

我正在努力解决的是如何获得 bpp(每像素字节数)和 bpl(每行字节数)的正确值。有谁知道我怎样才能得到这些值?目前我已经在其中放置了相当随机的值,并相信它会在以后导致错误。

我应该注意到,该应用程序还使用 JavaCV 进行图像识别,它可以很好地识别图像,并且我在这个 tesseract 调用中使用了相同的图像数据源。

谢谢。

4

1 回答 1

7

我实际上做了同样的事情并让它工作。我想您会以某种方式使用相机和相机预览来捕获屏幕以进行 OCR 识别。因此您可以获得相机预览格式,它允许您通过 PixelFormat 来检索 BytesPerPixel。

我会给你一个简短的例子:

Camera.Parameters cameraParameters = camera.getParameters(); // retrieve the camera parameters
previewFormat = cameraParameters.getPreviewFormat(); // retrieve the Previewformat according to your camera

PixelFormat pf = new PixelFormat(); // create a PixelFormat object
PixelFormat.getPixelFormatInfo(previewFormat, pf); // get through the previewFormat-int the PixelFormat

int bpp = pf.bytesPerPixel; // save the BytesPerPixel for this Pixelformat
int bpl = bpp*width; // BytesPerLines is just the "BPP * width" of your PreviewFormat/Picture

tess.setImage(imagedata, width, height, bpp, bpl); // setImage with imagedata[], width and height of the previewFormat, etc.

我希望它有所帮助。如果您还有其他问题,请现在告诉我。

最好的祝愿和好运,沃尔克

于 2011-05-13T12:41:43.660 回答