【发布时间】:2019-02-08 07:53:30
【问题描述】:
我已经搜索了几个小时,但似乎无法找到我的问题的答案。我在 android ndk(c++) 中编写了以下代码行,我正在使用所需的 opencv 库来完成任务。
void opening_images(){
Mat image ;
sillyString = "I have changed";
String imagePath = "//drawable//ring.png";
image = imread(imagePath,IMREAD_COLOR);
if(image.empty()){
sillyString = "Image not loaded";
}
else {
sillyString = "Image loaded";
}
}
我已经在 Qt 中使用 opencv 测试了这段代码,它工作正常。目前 android studio 中的程序返回“图像未加载”字符串。我认为目前的主要问题是,我不完全了解如何使用文件路径这一事实?在 android studio 中,我在 res/drawable/ring.png 下包含了一张图片。我可以使用应用程序的 java 端查看此图像。
问题 1:指定的 imagePath = "//drawable//ring.png" 是否正确访问 ring.png 文件? 问题 2: ndk 访问 res 文件夹是否需要任何权限? 问题 3: 有没有类似的方法可以将图像分配给 Mat 对象?
任何帮助将不胜感激。
编辑:
【问题讨论】:
-
为什么路径中有双斜杠?
-
当我在 Qt 中编码时,我读到 C++ 路径必须被转义。因此我在 android ndk 中使用了相同的实现。
-
转义符号是反斜杠(\),而不是正斜杠(/)——需要特殊处理的是前者,而不是后者...
-
谢谢,你说得对。我用 c++ 代码对其进行了测试,只有一个斜杠有效。但是它并没有解决android中的问题。
-
是的,我知道,但似乎仍然值得一提。现在,那条路径应该是绝对的吗?如在根目录中,有一个名为“drawable”的子目录,其中包含文件“ring.png”?您可以将其作为文件打开(例如
fstream)并从中读取吗?
标签: c++ opencv android-ndk opencv4android