无法使用cv :: imwrite将图像写入JNI中的Android文件系统

时间:2014-07-08 21:11:48

标签: android c++ opencv

最近我在使用JNI和C ++的Android上做了一些事情

我想用cv :: imwrite()将结果写入android文件系统,以检查我是否正确,但是没有写入文件。我也尝试写文本文件,再次失败。

这是我的代码的一部分。我有什么不对的吗?谢谢你的帮助!

JNIEXPORT void JNICALL Java_com_project_NativeLibs_test(JNIEnv *env, jclass clazz
{
    LOGV("test CALLED");

    std::string file1, file2, outFile;
    file1 = "/sdcard/test_data/images/box.pgm";
    file2 = "/sdcard/test_data/images/scene.pgm";
    outFile = "/sdcard/output_data/JNI_after.png";

    cv::Mat objectImg = cv::imread(file1, cv::IMREAD_GRAYSCALE);
    cv::Mat sceneImg =  cv::imread(file2, cv::IMREAD_GRAYSCALE);
    cv::Mat out;

    // ... some Mat process get output to Mat out

    cv::imwrite(outFile, out);

    std::ofstream filetest;
    filetest.open("test.txt");
    filetest<<"writing from JNI";
    filetest.close();

    LOGV("Done Finally");

}

1 个答案:

答案 0 :(得分:1)

也许你需要添加这个:

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

自: Android: OpenCV: imwrite always returns false and fails to write