2016-11-29 103 views
0

我有一个使用OpenCV的C++项目,我需要在Android上使用。为了简化,我们说,这是该项目代码:OpenCV imread不能在Android上工作

Test.h:

#include <iostream> 

class Test 
{ 
    public: 

    Test(); 
    ~Test(); 

    static std::string getTest(std::string filePath); 
}; 

Test.cpp的:

#include "opencv2/imgcodecs.hpp" 
#include "Test.h" 

using namespace cv; 

std::string Test::getSize(std::string filePath) 
{ 
    Mat image = imread(filePath, 1); 

    std::stringstream stringStream; 

    if(image.empty()) 
    { 
     stringStream << "Error loading image at path: " << filePath; 
     std::string error = stringStream.str(); 

     return error; 
    } 

    stringStream << "Image size: " << image.rows << " * " << image.cols; 
    std::string result = stringStream.str(); 

    return result; 
} 

我写我的JNI绑定,并设置了我它编译Android.mk,但imread方法不起作用:图像为空(image.empty()测试为真)。

这里有什么问题?我检查文件是否存在,所以我想它可以是:

  • 权限问题(我加的读/写外部存储器的权限,但它可能是低层次的问题)
  • 文件路径问题。我提供了一个绝对文件路径(如“/storage/emulated/0/test.jpg”)。 OpenCV是否期待相对路径?如果是这样,相对于什么?

回答

0

太糟糕了,我只是不接受Android 7手机的存储权限-_-

相关问题