2016-11-29 104 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手機的存儲權限-_-

相關問題