您尝试创建Mat对象会将指针传递给两个C ++对象,它们应该传递Java对象。有关的陈述是:
jobject matObject = (jobject)env->NewObject(matclass, constructor, ls, lsRect);
不要传递指针ls和lsRect,而是需要使用env-> NewObject来创建另一个Mat jobject和一个Rect jobject;然后将这些jobject传递给您对NewObject的原始调用。
您还需要设置Mat和Rect对象的字段。要做到这一点,你必须得到它们的字段ID(见 这个 StackOverflow回答)并使用SetIntField,SetDoubleField等JNI函数。
这很复杂,我建议获得盛亮的Java Native Interface副本,这对我很有帮助。