0

Android で使用する必要がある OpenCV を使用する C++ プロジェクトがあります。簡単にするために、これがプロジェクト コードであるとしましょう。

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() テストが true)。

ここで何が問題なのですか?ファイルが存在することを確認したので、次のいずれかであると思います。

  • 権限の問題 (外部ストレージの読み取り/書き込み権限を追加しましたが、下位レベルの問題である可能性があります)
  • ファイルパスの問題。絶対ファイル パス ("/storage/emulated/0/test.jpg" など) を指定しました。OpenCVは相対パスを期待していますか? もしそうなら、何に対して?
4

1 に答える 1

0

残念ながら、Android 7 の携帯電話でストレージの許可を受け入れなかっただけです ---

于 2016-11-30T16:15:22.253 に答える