小编Mau*_*cio的帖子

使用OpenCV预处理Tesseract OCR的图像

我正在尝试开发一个应用程序,它使用Tesseract识别手机摄像头拍摄的文档中的文本.我正在使用OpenCV预处理图像以便更好地识别,应用高斯模糊和阈值方法进行二值化,但结果非常糟糕.

是我用于测试的图像: 在此输入图像描述

这里的预处理图像: 在此输入图像描述

我可以使用其他过滤器来使Tesseract的图像更具可读性吗?

ocr opencv tesseract image-processing

23
推荐指数
3
解决办法
6万
查看次数

java.lang.IllegalStateException:AssetManager已完成

我昨天在我的应用程序工作时去睡觉,今天当我试图运行它时根本无法启动.一旦我尝试打开它就会崩溃java.lang.IllegalStateException.我已经在我的代码中提交了几个提交,只是为了排除这是我最近做过的事情.这没有任何意义,应用程序如何才能停止工作一夜?我在互联网上寻找错误,并没有很多有用的信息.这真的是一个奇怪的错误吗?

这是完整的堆栈跟踪:

E/AndroidRuntime:FATAL EXCEPTION:main java.lang.IllegalStateException:AssetManager已经完成!在android.app.Parcel.readException(Parcel.java:1439)的android.app.Aar开发.事件(Partcel.java:1449),android.app.A活动.ProartA活动(ActivityManagerNative.java:1947). Instrumentation.execStartActivity(Instrumentation.java:1419)位于android.app.Activity.startActivityForResult(Activity.java:3390)的android.app.Activity.startActivity(Activity.java:3583),位于com.android.launcher2.Launcher.startActivity (Launcher.java:2442)com.android.launcher2.Launcher.startActivitySafely(Launcher.java:2469)at com.android.launcher2.AppsCustomizePagedView.onClick(AppsCustomizePagedView.java:584)at android.view.View.performClick( View.java:4240)在android.view.Handler.dispatchMessage(Handler.java)的android.view.View $ PerformClick.run(View.java:17721)android.os.Handler.handleCallback(Handler.java:730) :92)在android.app.Looper.loop(Looper.java:137)的android.app.ActivityThread.main(ActivityThread.java:5136)at java.lang.reflect.Method.invokeNative(Native Method)at j com.android.internal.os.ZygoteInit.main中的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:737)中的ava.lang.reflect.Method.invoke(Method.java:525) ZygoteInit.java:553)at dalvik.system.NativeStart.main(Native Method)

因为就像我说它似乎不是我所做的任何事情我不确定要发布什么代码.但是考虑到应用程序崩溃,这里是应该首先启动的两个主要类的代码:

应用

public class App extends Application {

  private static App instance;
  private static final String TAG = "Starter";

  @Override
  public void onCreate() {
    super.onCreate();

    instance = this;
    // Enable Local Datastore.
    Parse.enableLocalDatastore(this);

    //TODO: Register subclasses
//    ParseObject.registerSubclass(Challenge.class);

    //Parse server
    Log.d(TAG, "Initializing Parse");
    Parse.initialize(new Parse.Configuration.Builder(this)
            .applicationId(getString(R.string.parse_app_id))
            .clientKey(getString(R.string.parse_client_key))
            .server(getString(R.string.server_address)).build()
    );

    //Facebook
    if (AccessToken.getCurrentAccessToken() == null)
      ParseFacebookUtils.initialize(this);

    ParseUser.enableAutomaticUser(); …
Run Code Online (Sandbox Code Playgroud)

java android illegalstateexception

8
推荐指数
1
解决办法
2273
查看次数

IndexOutOfBoundsException setSpan (34 ... 48) 超出长度 34 结束

我有一份崩溃报告指出,IndexOutOfBoundsException但我不知道是什么原因导致的,因为堆栈中没有我的代码中的任何内容。这是堆栈:

Fatal Exception: java.lang.IndexOutOfBoundsException: setSpan (34 ... 48) ends beyond length 34
       at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1265)
       at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:684)
       at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:677)
       at android.widget.Editor$SuggestionsPopupWindow.updateSuggestions(Editor.java:3980)
       at android.widget.Editor$SuggestionsPopupWindow.show(Editor.java:3833)
       at android.widget.Editor.replace(Editor.java:435)
       at android.widget.Editor$3.run(Editor.java:2359)
       at android.os.Handler.handleCallback(Handler.java:751)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:154)
       at android.app.ActivityThread.main(ActivityThread.java:6776)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
Run Code Online (Sandbox Code Playgroud)

我发现的唯一与我的问题类似的事情是这个,但那家伙无法解决它。

我怎样才能知道是什么原因造成的,以便寻找解决方案?

编辑

好的,我发现在我的大型代码的多个部分中正在使用此函数:

public static Spannable spannabletext(String message, int start, int end, String font_family, Typeface font) {

    Spannable spannable = new SpannableString(Html.fromHtml(message));
    spannable.setSpan(new CustomTypefaceSpan(font_family, font),
            start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);

    return spannable;

}
Run Code Online (Sandbox Code Playgroud)

所以我猜测在某些时候这就是问题的根源。但由于我不想花几个小时试图猜测哪个文本和哪种语言(我的应用程序有 8 种不同的语言)是生成此崩溃的,所以我要等到它再次发生,但这次我添加了一些Crashlytics …

java android

5
推荐指数
1
解决办法
3899
查看次数

从 AWS EC2 上的终端运行 Android 模拟器

我正在尝试使用 ubuntu 在 EC2 t2.medium 实例上运行 Android 模拟器。当我尝试运行这个时:

/home/ubuntu/tools/android-sdk/tools/emulator -engine classic -ports 5724,5725 -report-console tcp:5854,max=60 -avd Samsung_Galaxy_S4_Mini_API_19 -no-snapshot-load -no-snapshot-save -no-window
Run Code Online (Sandbox Code Playgroud)

我得到:

sh:1:glxinfo:找不到模拟器:警告:忽略无效的SDCard路径:/Users/danielsierraf/.android/avd/Samsung_Galaxy_S4_Mini_API_19.avd/sdcard.img sh:1:glxinfo:找不到模拟器:警告:经典qemu没有支持SMP。配置文件中的 hw.cpu.ncore 选项将被忽略。模拟器:错误:x86 模拟当前需要硬件加速!请确保 KVM 已正确安装并可用。CPU加速状态:KVM需要支持vmx或svm的CPU

所以我尝试:

sudo /usr/sbin/kvm-ok
Run Code Online (Sandbox Code Playgroud)

INFO: 您的CPU不支持KVM扩展 无法使用KVM加速

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
Run Code Online (Sandbox Code Playgroud)

我在互联网上读到一些有关在 BIOS 中启用虚拟化的内容。但我不能在 EC2 上这样做,不是吗?我这真的是解决方案吗?

android kvm amazon-ec2 android-emulator

2
推荐指数
1
解决办法
6858
查看次数

Android 中的 OpenCV 旋转(去偏斜) - C++ 到 Java 的转换

我正在尝试检测图像链接中文本的倾斜角度。问题是这篇文章是用 C++ 编写的,我在将某些内容转换为 Java 时遇到了麻烦。

我做了休变换的实现。我在这篇文章(1) 中指导我的大部分 Java 转换。但它不能正常工作。当应该给出 15.9882 的角度时,给出的角度为 0.27919363。是我正在使用的图像。

这是我的代码:

public double compute_skew1(String filename){
    Log.d(TAG, "Computing skew 1");

    Mat src = Highgui.imread(filename, 0);
    Size size = src.size();
    //double minLineSize = 20;
    double minLineSize = src.width() / 2.f;

    Core.bitwise_not(src, src);

    Mat lines = new Mat();
    double angle = 0.;
    try {
        Imgproc.HoughLinesP(src, lines, 1, Math.PI / 180, 100, minLineSize, 20);

        Mat disp_lines = new Mat(size, CvType.CV_8UC1, new Scalar(0, 0, 0));
        int nb_lines …
Run Code Online (Sandbox Code Playgroud)

c++ java android opencv skew

0
推荐指数
1
解决办法
3462
查看次数