无法使用cv :: imwrite在JNI本机代码openCv

时间:2017-09-22 11:59:12

标签: android c++ opencv android-ndk java-native-interface

我的本​​机代码存在问题,因为在我的c ++代码中,我无法保存从JAVA部分收到的图像。

我尝试使用cv::imwrite,但图片永远不会保存在路径和相应的文件夹中。

我的JNI代码如下:

extern "C"{
    JNIEXPORT jintArray JNICALL Java_com_example_testNativeCode_DisplayImage_FindFeatures(JNIEnv* env, jclass obj, jintArray bufImg, jint w, jint h){

    jint *cbuf;
    cbuf = env->GetIntArrayElements(bufImg, 0);

    if(cbuf==NULL){
       return 0;
    }

    cv::Mat mImg(h,w,CV_8UC4, (unsigned char*)cbuf);

    cv::imwrite("../SaveImage/img.png", mImg);
    }
}

我使用android studio 2.3.3和OpenCv 3.1.0。 我把清单放进去了:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

我想知道是否可以使用cv::imwrite录制图像? 我怎么办才能保存它?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,但是我可以通过以下步骤解决它:

1。请求权限

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

2。手动打开权限开关

3。关闭应用程序并清除任务

4。打开您的项目应用程序,然后重试,它对我有用。

如果它不适合您,请卸载并重新安装应用程序,然后重复上述步骤