【问题标题】:bytes per pixel, bytes per line - How to use function nativeSetImageBytes in tessbaseapi.cpp of tess-two?每像素字节数,每行字节数 - 如何在 tess-two 的 tessbaseapi.cpp 中使用函数 nativeSetImageBytes?
【发布时间】:2018-07-30 08:48:31
【问题描述】:

我们正在解析一个显示 textsn-p 的图像,其分辨率为 2121x105 像素。在 Java 中,我们有以下代码来获取字节数组(我们的一个约束是在这里使用字节数组):

import org.apache.commons.io.IOUtils;

...

InputStream is = getAssets().open("images/text.png");
byte[] bytes = IOUtils.toByteArray(is);

然后这个字节数组被传递给原生 C++ 代码——我们没有使用 tess-two 的 Java 包装器,但我们使用原生库。在本机代码中,我们试图获取 GetUTF8Text() 的图像文本。然后我们看到 tess-two 已经有一个实现,通过将图像作为字节数组传递来设置要从中读取的图像:

void Java_com_..._TessBaseAPI_nativeSetImageBytes(JNIEnv *env,
                                                  jobject thiz,
                                                  jlong mNativeData,
                                                  jbyteArray data,
                                                  jint width,
                                                  jint height,
                                                  jint bpp,
                                                  jint bpl) {

...

我们认为 PNG 的 bpp 应该是 4 (RGBA)。 bpl 的预期内容尚不清楚。如果我们将图像的宽度设置为乘以 bpp,则会出现分割错误。如果我们将其设置为零,则返回一个空字符串。

更新: GetUTF8Text() 中引发了分割错误,而 SetImage() 中没有。

SIGSEGV (signal SIGSEGV: invalid address (fault address: 0xc))

【问题讨论】:

  • 你需要先解码你的 png。
  • 解码是什么意思?
  • 我的意思是我说的。您的图像使用 libpng 编码,需要在 tesseract 使用之前进行解码。参见java示例here
  • 好的,谢谢。我现在知道我需要解码我的 jbyteArray,但是当 nativeSetImageBytes 需要一个字节数组时,我会得到另一个对象类型。为了清楚起见,函数 nativeSetImageBytes 是 tess-two 的实现。
  • tess-two aka tesseract 需要 rgba rgb 或灰度格式的解码图像。所以你需要解码你的 png 并将结果转换为字节数组。 bpp 是 rgba 格式的每像素字节数,它将是 4(1 字节是红色 2 是绿色 3 是蓝色 4 是 alpha)对于 rgb 它将是 3(1 字节是红色 2 是绿色 3 是蓝色)对于灰度它将是1. bpl 是每行字节数 = bpp * 图像宽度

标签: java c++ java-native-interface tesseract tess-two


【解决方案1】:

tess-two 使用 tesseract OCR 需要 rgba rgb 或灰度格式的解码图像。

所以您需要解码您的 png(this 问题解释了如何在 java 中执行此操作)并将结果转换为字节数组。

bpp 是 rgba 格式的每像素字节数,它将是 4(1 字节是红色 2 是绿色 3 是蓝色 4 是 alpha)对于 rgb 它将是 3 (1 字节为红色 2 为绿色 3 为蓝色)灰度为 1。

bpl 是每行字节数 = bpp * 图像宽度

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多