La funzione nativa voglio usare richiede un array di 7 Mat
s:passare un array di Mats in codice nativo
static int nativeCode(cv::Mat &inputImg, cv::Mat bufImgs[7]);
In jni_part
ho:
Mat& mRgba = *(Mat*)inRgba;
Mat& bufImgs[7] = *(Mat*)inBufImgs;
nativeCode(mRgba,bufImgs);
Nel mio codice Java I 'm dichiarando i miei campi:
private Mat mRgba;
private Mat[] bufImgs = new Mat[7];
posso chiamare getNativeObjAddr
su mRgba
, ma ho w faccio a fare l'equivalente per l'array?
Alcuni retroscena:
Sto utilizzando OpenCV, facendo di elaborazione delle immagini in diretta con la fotocamera. La funzione che sto chiamando su ogni frame richiede alcuni oggetti extra. Per evitare di creare e distruggere questi oggetti su ogni frame, mi piacerebbe crearli una volta e passare semplicemente i riferimenti ogni volta.
puoi spiegare la tua sintassi al 'GetFieldID (thisclass, "mRgba "," Lorg/opencv/core/Mat; ");' e 'GetFieldID (thisclass," bufImgs "," [Lorg/opencv/core/Mat; ");'. Cosa sono 'L' e' ['per? Lottando per trovare la documentazione per questo. – fredley
@TomMedley I descrittori di classi in JNI appaiono sempre come 'L;' (con le barre al posto dei punti, inoltre, non dimenticare il punto e virgola, si tratta di un errore comune). I descrittori di array sembrano '['. http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/types.html#wp16432 –
Grazie, molto apprezzato. – fredley