Domanda

Sto usando questo codice per cuciture immagine con JavaCV su 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);
    }
}
.

Ma quando lo eseguo, l'app si schianta e il registro mostra il seguente errore:

java.lang.ExceptionInInitializerError at ...
.

E l'errore punta alla sezione STITCHER, la prima riga del mio codice.Se provo a fare Stitcher stitcher; non si rompe, ma non posso fare nient'altro dal momento che il cucitore non è inizializzato.Se provo a inizializzarlo a null, si blocca con lo stesso errore.

Qualche idea del problema?Ho cercato un po 'e tutte le persone lo usano e sembra funzionare.

È stato utile?

Soluzione 2

OK, l'ho capito.

Il problema era che la biblioteca opencv_stitching.so era solo nella cartella Armeabi e ne avevo bisogno in Armeabi-V7A.Non posso dichiarare il cucitore e inizializzarlo.

Altri suggerimenti

EccezioneININITILINIZERROR

segnali che un'eccezione imprevista si è verificata in un'inizializzazione statica.Un eccezione INCESSOLINITILIZERERROR viene lanciato per indicare che si è verificata un'eccezione durante la valutazione di un'inizializzazione statica o dell'inizializzazione per una variabile statica.

farei qualcosa come

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

e guarda cosa succede veramente - a meno che tu non abbia già ricevuto queste informazioni in causato dalla clausola della traccia di eccezione.

PS A volte gli errori si verificano quando una classe viene inizializzata sul filo errato (ad esempio, nelle versioni precoce di Android la classe ASYNCTASK ha richiesto l'inizializzazione esplicita sul thread principale in un'applicazione che altrimenti caricare questa classe su un filo lavoratore).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top