0

我有一个使用 OpenCV 的 C++ 项目,需要在 Android 上使用。为了简化,假设这是项目代码:

测试.h:

#include <iostream>

class Test
{
    public:

    Test();
    ~Test();

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

测试.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 是否需要相对路径?如果是这样,相对于什么?
4

1 回答 1

0

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

于 2016-11-30T16:15:22.253 回答