Android和JNI之间的参数传递
我正在处理带有OpenCV的Android应用程序和JNI之间的参数传递。使用Java中的OpenCV库,我在Android应用程序代码中有类似的内容 Android OpenCV Java代码: C代码: 但是当我尝试在C代码中从(Mat)到(IplImage*)进行反转换时,我的应用程序失败了。所以我的问题是如何将CvRect和Mat对象从我的Android Java代码传递到JNI。有更好的方法吗Android和JNI之间的参数传递,android,opencv,java-native-interface,native-code,Android,Opencv,Java Native Interface,Native Code,我正在处理带有OpenCV的Android应用程序和JNI之间的参数传递。使用Java中的OpenCV库,我在Android应用程序代码中有类似的内容 Android OpenCV Java代码: C代码: 但是当我尝试在C代码中从(Mat)到(IplImage*)进行反转换时,我的应用程序失败了。所以我的问题是如何将CvRect和Mat对象从我的Android Java代码传递到JNI。有更好的方法吗 非常感谢。看起来JavaMat对象和CMat对象之间有区别,但是您可以传递JavaMat
非常感谢。看起来Java
Mat
对象和CMat
对象之间有区别,但是您可以传递JavaMat
对象存储的本机Mat
对象的地址。将代码更改为以下内容:
Android OpenCV Java代码:
//call to the native function
int resProc = Native.processImages_native(rect, mat.getNativeObjAddr());
jint Java_com_test_Native_processImages_1native
(JNIEnv* env, jclass jc, CvRect rect, jlong mat){
int res = processImages(rect, *((Mat*)mat));
return (jint)res;
}
C代码:
//call to the native function
int resProc = Native.processImages_native(rect, mat.getNativeObjAddr());
jint Java_com_test_Native_processImages_1native
(JNIEnv* env, jclass jc, CvRect rect, jlong mat){
int res = processImages(rect, *((Mat*)mat));
return (jint)res;
}