作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如何编写我的 C++ JNI 函数,以便它向 Java 代码返回一个 Mat 数组?我在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 中使用它。我该怎么做?
最佳答案
一种解决方案是在 Java 中分配一个大小相等的数组,将其传递给您的原生 getFrames()
函数,并使用您的帧缓冲区单独膨胀 Mat
对象.请看this post有关将数组传递给 native 代码的示例,以及 this one寻找一种从原生的 Java Mat
中膨胀的方法。
如果您确实需要在 native 代码中创建数组并返回它,请查看可通过 JNI 获得的 NewObjectArray
方法。 ( Example )
关于android - 如何将 Mat 数组从 JNI 返回到 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19067701/
到目前为止,我已经生成了以下代码来尝试将相关数据整合在一起。 但是,使用“+ 7”函数会产生以下问题。 Registration date = '2018-01-01' 它正在推迟 2018-04-0
我已经成功地将我的自定义购物车发布到 PayPal——它处理订单非常漂亮,当收到付款时,它会将数据发回我在配置中指定的 URL。代码基于此处找到的库:http://www.phpfour.com/bl
我是一名优秀的程序员,十分优秀!