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是否期待相對路徑?如果是這樣,相對於什麼?