我遵循了在数组中获取本地地址并传递给NDK的相同步骤。Arraylist pass java to 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
”。
请指导我这个或任何其他解决方案将不胜感激。
答案 0 :(得分:0)
经过长时间的研究,我找到了这个问题的解决方案。希望这对其他人有用
要获得数组的长度,可以使用以下行,
<ion-item *ngFor="let item of pushupSeriesToday | async ">
<ion-item>{{item.count}} - {{item.date | date}}</ion-item>
</ion-item>
jsize a_len = env->GetArrayLength(templates);
可用于for循环
这解决了我上述问题的问题。