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

标签 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");

最佳答案

也许你需要添加这个:

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

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

关于android - 无法使用 cv::imwrite 在 JNI 中将图像写入 Android 文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24641688/

相关文章:

java - 检查文档是否存在于 Firestore 集合中

c++ - 动态数组的实现是否在开始时预留空间用于前置?

android - 尝试UNINSTALL_SHORTCUT但快捷方式不会消失

android - 可以使用来自耳机插孔的音频吗?

c++ - 多个转换运算符导致赋值运算符歧义

android - Javacv 代码中的 Nvidia Tegra 2 芯片组(Android Samsung Tab)上的 System.LoadLibrary(libname) 崩溃

java - 无法在 OS X 上初始化类 org.bytedeco.javacpp.avutil 以及 JavaCV 中的 Maven

c++ - OpenCV 未填满整个图像

android - 我如何在 android 的多个页面中显示一个长 TextView (字符串)

C++ 指针使用 Visual Studio 更改地址,而不是使用 OsX 中的 Xcode 或 Linux 中的 gcc