【发布时间】:2015-02-19 06:33:11
【问题描述】:
首先,我是 Stackoverflow 的新用户,对于这个问题中的任何错误,我深表歉意。我已经尽力了,但还没有解决我的问题,请指导。
在问这个问题之前我已经搜索了很多,但没有找到答案。我有一个 c++ 代码,我在其中进行一些图像处理并在输出(String[][]、int[][]、Mat[])上获得 2 个二维数组和 1 个 1 维数组。我已完成将 String 和 int 数组返回给 java,但无法将 Mat[] 返回给 java。将 Mat[] 数组返回给 java 现在我所做的如下所示。
jclass cls = env->FindClass("org/opencv/core/Mat");
jmethodID jMatCons = env->GetMethodID(cls,"<init>","()V");
// Call back constructor to allocate a new instance
jobjectArray newMatArr = env->NewObjectArray(appWords.size(), cls, 0);
jobject jMat = env->NewObject(cls, jMatCons);
for (int k=0; k< appWords.size(); k++){
env->SetObjectArrayElement(newMatArr, k, jMat);
// nativeBufImgs[k] = appWords[k];
}
上面粘贴的代码将一个 Mat[] 数组返回给 java 但为空。为了解决我的问题,我检查了这些问题 how to return array of Mat from JNI to Java 但它没有解决我的问题。 我还为我的 Mat[] 问题复制了此链接,但没有结果 Getting keypoint back from native code 在上面的代码中,我认为问题是我没有将 Mat 的方法签名放在这一行中
jmethodID jMatCons = env->GetMethodID(cls,"","()V");
所以请指导我。或任何其他解决方案将不胜感激
【问题讨论】:
标签: opencv android-ndk java-native-interface