如何编写我的 c++ JNI 函数,以便将 Mat 数组返回给 Java 代码?我在 Android 环境中编程,借助 NDK 还可以使用 OpenCV 的一些功能。
我的 C++ 函数是:
JNIEXPORT void JNICALL Java_com_micaela_myapp_MainActivity2_getFrames(JNIEnv* env, jobject object, jstring path)
{
const char *str;
str = env->GetStringUTFChars(path, NULL);
VideoCapture input_video;
if(input_video.open(str)){
cout<<"Video File Opened"<<endl;
}else{
cout<<"Video File Not Found"<<endl;
}
Mat image;
Mat frameBuffer[1000];
int i=0;
while(input_video.read(image)==true){
image.copyTo(frameBuffer[i]);
i++;
}
}
在Java中我有:
static{
System.loadLibrary("myapp");
}
public static native void getFrames(String path);
此函数现在返回 void 并正常工作。但是,我的目的是从中获取数组 frameBuffer,以便在 Java 中使用它。我怎样才能做到这一点?