【发布时间】:2012-03-27 20:43:50
【问题描述】:
我正在处理带有 OpenCV 的 Android 应用程序和 JNI 之间的参数传递。在 Java 中使用 OpenCV 库,我在 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;
}
但是当我尝试在 C 代码中从 (Mat) 到 (IplImage *) 进行反转换时,我的应用程序失败了。所以我的问题是关于如何将 CvRect 和 Mat 对象从我的 Android Java 代码传递给 JNI。有没有更好的方法来做到这一点?
非常感谢。
【问题讨论】:
标签: android opencv java-native-interface native-code