我目前正在编写一个需要在其中使用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调用.
谢谢.
我实际上也做了同样的工作.我想你会以某种方式使用相机和相机预览来捕捉屏幕以进行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.
我希望它有所帮助.如果您还有其他问题请立即与我联系.
祝你好运,Volker