我目前正在编写一个需要在其中使用OCR的Android应用程序。
为实现这一目标,我将Tesseract与tesseract-android-tools project结合使用。
我设法让Tesseract API初始化并需要使用以下setImage函数:
void com.googlecode.tesseract.android.TessBaseAPI.setImage(byte[] imagedata, int width, int height, int bpp, int bpl)
我正在努力的是如何获得bpp(每像素字节数)和bpl(每行字节数)的正确值。 有谁知道我如何获得这些值?我现在已经在那里放置了相当随机的值,并且相信它会在以后导致错误。
我应该注意到该应用程序还使用JavaCV进行图像识别,这可以很好地识别图像,并且我正在使用相同的图像数据源进行此tesseract调用。
感谢。
答案 0 :(得分:6)
我实际上也做了同样的工作。我想你会以某种方式使用相机和相机预览来捕捉屏幕以进行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.
我希望它有所帮助。如果您现在有其他问题,请立即与我联系。
祝你好运,祝你好运, 沃尔克