0
我遵循了在數組中使用本地地址並傳遞給NDK的相同步驟。 Arraylist pass java to ndk 並在本機端我做了如下給出將Mat數組傳遞給NDK
JNIEXPORT jint JNICALL Java_com_app_android_flowerhgram_1woutcondition_TemplateMatch_MatchTemplate
(JNIEnv *env, jclass, jlong addrProcessed, jlongArray templates, jobject out){
Mat& mProcesseed = *(Mat *)addrProcessed;
vector <Mat> trainimgs;
jint retVal=0;
int num=0,temp=0;
jclass alCls = env->FindClass("org/opencv/core/Mat");
jmethodID jMatCons = env->GetMethodID(alCls,"<init>","()V");
jmethodID alGetId = env->GetMethodID(alCls, "getNativeObjAddr", "()J");
jmethodID sizeMethodID = env->GetMethodID(alCls, "size", "()I");
jlong *traindata = env->GetLongArrayElements(templates,0);
int intValue = *(int*) sizeMethodID;
for(int k=0;k < intValue ; k++)
{
Mat & newimage=*(Mat*)traindata[k];
trainimgs.push_back(newimage);
}
env->ReleaseLongArrayElements(templates,traindata,0);
return retVal;
}
對於這個我沒有遇到任何編譯錯誤,但在編譯時我得到錯誤的大小 Pending exception java.lang.NoSuchMethodError: no non-static method "Lorg/opencv/core/Mat;.size()I
」。
請指導我要這或任何其他解決方案將不勝感激。
我不熟悉org.opencv.core.Mat類,但不是大小返回大小(org.opencv.core.Size)而不是整數? – mko
我也嘗試過使用org.opencv.core.Size類,同樣的錯誤重複。爲了您的參考,我將array.length的地址從java傳遞給NDK。 – Gowthaman
我在這裏指的是這行:env-> GetMethodID(alCls,「size」,「()I」);它不應該讀取:env-> GetMethodID(alCls,「size」,「()Lorg/opencv/core/Size;」); – mko