我正在使用这个代码进行javacv在android上的图像拼写:

public void ImageStitching() {
    Stitcher stitcher = Stitcher.createDefault(false);
    MatVector images = new MatVector(2);
    images.put(0,cvLoadImage("sample1.png"));
    images.put(1,cvLoadImage("sample2.png"));

    IplImage result = new IplImage(null);
    int status = stitcher.stitch(images,result);

    if( status == Stitcher.OK )
    {
        cvSaveImage("result.png", result);
    }
}
.

但是当我执行它时,应用程序崩溃,日志显示以下错误:

java.lang.ExceptionInInitializerError at ...
.

和错误点到拼接启动,我的代码的第一行。如果我尝试做生成的,它不会破坏,但由于拼接器未初始化,我无法执行任何其他操作。如果我尝试将其初始化为具有相同错误的生成次崩溃。

对这个问题的任何了解?我一直在寻找一段时间,所有人都使用它,似乎工作。

有帮助吗?

解决方案 2

好的,我得到它。

问题是,库oencv_stecing.so只是在armabi和我需要的文件夹中,我需要在armabi-v7a一个。不是我可以声明拼接器并初始化它。

其他提示

ExperfipinitializerError

信号在静态初始化程序中发生了意外的异常。抛出异常ineptionInitializerError,以指示在评估静态初始化器或静态变量的初始化器期间发生异常。

我会做一些像

Stitcher stitcher;
{
    try {
        stitcher = Stitcher.createDefault(false);
    } catch (Throwable t) {
        t.printStackTrace();
        throw t;
    }
}
.

,看看真正发生的事情 - 除非你在例外跟踪的子句引起的中有那个信息。

ps有时会在错误的线程上初始化类时发生错误(例如,在Android的早期版本的Asnctask类中,否则在应用程序中加载此类的应用程序中的主线程中的明确初始化)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top