这段代码曾经有效,但在 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/