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是否期待相对路径?如果是这样,相对于什么?