求助万能的 V 友,遇见了一个关于在 android 上跑 opencv 的 bug,详见正文

2021-11-17 16:59:02 +08:00
 zhttp
背景:我实现了一个图像处理算法,用 c++写的,原本是打算放到嵌入式板子上跑的,但是 boss 认为耗时太长,所以希望把这个功能放到我们的手机 app 上,也就是移植到 android 平台上,我对 android 和 java 完全不了解,通过查阅资料,最终使用了 android ndk JNI 的方案,简而言之就是把 c++源码编译成库,通过编写一些中间文件,供 java 调用,目前移植基本完成,可以在 android 上跑通。以上是背景。
问题:处理完图片使用 imwrite 保存文件,遇到问题,路径读写权限都检查过了没问题,当我第一次使用某个文件名来保存我的图片的时候,例如说“output.jpg”,可以正常保存,在手机的文件管理器中也可以看到图片,这期间,如果这张图片不删除,那就可以一直使用这个文件名保存(也就是可以覆盖),但是如果我手动把这个文件删掉,再次运行程序,imwrite 就会失败,errno 会被设置为 17 也就是文件已存在,哪怕是我删掉应用重新安装( Android studio 调试状态)这个“output.jpg”都没法使用了,哪怕是文件已经删除,在 c++里面使用 access("/path/output.jpg", F_OK)也可以确定文件已经不存在了。
总结一下:就是从表面上来看,似乎文件名是“一次性”的,只要删掉,之后就不能用了,这就很奇怪
469 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/816088

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX