質問

AndroidのJavaCVでイメージステッチのためのこのコードを使用しています:

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 ...
.

とエラーがステッチャの開始を指し、コードの最初の行です。Stitcher stitcher;をやりようとしたら、それは壊れませんが、ステッチャが初期化されていないため、他にはできません。nullに初期化しようとすると、同じエラーでクラッシュします。

問題についての考え?私はしばらくしてすべての人々がそれを使用していて、それはうまくいっているようです。

役に立ちましたか?

解決 2

OK、私はそれを手に入れました。

問題は、ライブラリopencv_stitching.soがフォルダarmeabiにのみ、ARMeabi-v7a 1に必要なフォルダのみであったことです。ステッチャを宣言して初期化することはできません。

他のヒント

ExceptionInitializerError

は、静的イニシャライザで予期しない例外が発生したことを示します。Static Initializerまたは静的変数の初期化装置の評価中に例外が発生したことを示すために、ExceptionInitializerErrorがスローされます。

私は

のようなことをするでしょう
Stitcher stitcher;
{
    try {
        stitcher = Stitcher.createDefault(false);
    } catch (Throwable t) {
        t.printStackTrace();
        throw t;
    }
}
.

と本当に起こるものを見てください - 節の節の

を持っていない限り。

PS誤ったスレッドでクラスが初期化されたときにエラーが発生した場合に発生します(たとえば、AndynCtaskクラスの初期バージョンでは、このクラスがワーカースレッドでロードするアプリケーション内のメインスレッドの明示的な初期化が必要です)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top