Android: OpenCV: imwrite 总是返回 false 并且写入失败

标签 android opencv

这段代码曾经有效,但在 Android 4.2 和 OpenCV 2.4.4 上它失败了,但我不知道为什么。任何人都可以为我阐明它吗?

感谢您的帮助。

巴兹

public void SaveImage (Mat mat) {
  Mat mIntermediateMat = new Mat();

  Imgproc.cvtColor(mRgba, mIntermediateMat, Imgproc.COLOR_RGBA2BGR, 3);

  File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
  String filename = "barry.png";
  File file = new File(path, filename);

  Boolean bool = null;
  filename = file.toString();
  bool = Highgui.imwrite(filename, mIntermediateMat);

  if (bool == true)
    Log.d(TAG, "SUCCESS writing image to external storage");
  else
    Log.d(TAG, "Fail writing image to external storage");
  }

bool 每次都返回 false。用户 #0 的文件路径/名称应该是(“storage/emulated/0/Pictures/barry.png”),目录 Pictures 就在那里。

什么可以使 imwrite 返回 false?

我可以将 mat 转换为 bmp 并自己保存(我在非 OpenCV 应用程序的其他地方这样做)但是因为 Highgui.imwrite 在那里,并且当我写入 2.4.0 和在 Android 3.x 上测试,如果可以的话我想使用它。

非常感谢

巴兹

最佳答案

我不敢相信。 [捂脸].

将此添加到您的 list 文件 Barry:

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

有人过来打我一巴掌好吗?我设法从 list 中删除了写权限,所以它不会写也就不足为奇了……

哦。

巴里

关于Android: OpenCV: imwrite 总是返回 false 并且写入失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15291504/

相关文章:

java - 尝试创建 fragment 类

android - 在 Android 中从 AsyncTask 检索返回的字符串

android - 根据路线方向转动(旋转)标记位置

android - ACTION OPEN DOCUMENT TREE 只返回空的 Recent 文件夹

opencv - 模板匹配——不同尺寸的模板和图像

python - 如何根据 python 中的 rgb 值合并图像中的像素?

c++ - Linux 中的 OpenCv VideoCapture 错误 - 不支持设置属性 #0

android - 使用 Facebook SDK 4.0.1 膨胀类 com.facebook.widget.LoginButton 时出错

opencv - 无法将C++代码(具有OpenCV用法)编译为wasm

c++ - 绘制特定颜色的矩形 OpenCV