Я имею дело с передачей параметров между приложением Android с OpenCV и JNI. Использование библиотек OpenCV в Java У меня есть что-то подобное в коде приложения Android.
Android OpenCV Java-код:
Mat mat; //Mat object with data
Rect rect; //Rect object with data
//call to the native function
int resProc = Native.processImages_native(rect, mat);
C Код:
JNIEXPORT jint JNICALL Java_com_test_Native_processImages_1native
(JNIEnv*, jclass, CvRect, Mat);
...
jint Java_com_test_Native_processImages_1native
(JNIEnv* env, jclass jc, CvRect rect, Mat mat){
int res = processImages(rect, mat);
return (jint)res;
}
...
int processImages(CvRect rect, Mat mat)
{
IplImage *ipl_Img = &mat.operator IplImage(); // here FAILS
CvRect rect_value = rect;
}
Но когда я пытаюсь выполнить де-преобразование из (Mat) в (IplImage *) в коде C, мое приложение не работает. Поэтому мой вопрос о том, как передать объект CvRect и Mat из моего Java-кода Android в JNI. Есть ли лучший способ сделать это?
Большое спасибо.