每像素字节数,每行字节数 - 如何在 tess-two 的 tessbaseapi.cpp 中使用函数 nativeSetImageBytes?
bytes per pixel, bytes per line - How to use function nativeSetImageBytes in tessbaseapi.cpp of tess-two?
我们正在解析显示文本片段的图像,其分辨率为 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))
tess-two
which uses tesseract OCR
需要 rgba rgb 或灰色格式的解码图像。
所以你需要解码你的 png(this 问题在 java 中解释了如何做)并将结果转换为字节数组。
bpp 是 rgba 格式每个像素的字节数,它将是 4(1 字节是红色 2 是绿色 3 是蓝色 4 是alpha) 对于 rgb 它将是 3(1 字节是红色 2 是绿色 3 是蓝色)对于灰度它将是 1。
bpl 是每行字节数 = bpp * 图像宽度
我们正在解析显示文本片段的图像,其分辨率为 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))
tess-two
which uses tesseract OCR
需要 rgba rgb 或灰色格式的解码图像。
所以你需要解码你的 png(this 问题在 java 中解释了如何做)并将结果转换为字节数组。
bpp 是 rgba 格式每个像素的字节数,它将是 4(1 字节是红色 2 是绿色 3 是蓝色 4 是alpha) 对于 rgb 它将是 3(1 字节是红色 2 是绿色 3 是蓝色)对于灰度它将是 1。
bpl 是每行字节数 = bpp * 图像宽度