OpenCV imread不能在Android上运行

时间:2016-11-29 23:05:16

标签: android opencv imread

我有一个使用OpenCV的C ++项目,我需要在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()测试为真)。

这里有什么不对?我检查了文件是否存在,所以我猜它是:

  • 权限问题(我添加了读/写外部存储权限,但可能是较低级别的问题)
  • 文件路径问题。我提供了一个绝对文件路径(例如&#34; /storage/emulated/0/test.jpg")。 OpenCV是否期望相对路径?如果是这样,相对于什么?

1 个答案:

答案 0 :(得分:0)

太糟糕了,只是因为我没有接受Android 7手机上的存储权限-_-