Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android和JNI之间的参数传递_Android_Opencv_Java Native Interface_Native Code - Fatal编程技术网

Android和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

我正在处理带有OpenCV的Android应用程序和JNI之间的参数传递。使用Java中的OpenCV库,我在Android应用程序代码中有类似的内容

Android OpenCV Java代码:

C代码:

但是当我尝试在C代码中从(Mat)到(IplImage*)进行反转换时,我的应用程序失败了。所以我的问题是如何将CvRect和Mat对象从我的Android Java代码传递到JNI。有更好的方法吗


非常感谢。

看起来Java
Mat
对象和C
Mat
对象之间有区别,但是您可以传递Java
Mat
对象存储的本机
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;
}