2016-11-29 3 views
0

J'ai un projet C++ utilisant OpenCV que j'ai besoin d'utiliser sur Android. Pour simplifier, disons que c'est le code du projet:OpenCV imread ne fonctionne pas sur 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; 
} 

J'ai écrit mes liaisons JNI et mettre en place ma Android.mk et il compile, mais la méthode imread ne fonctionne pas: l'image est vide (le test image.empty() est vrai).

Qu'est-ce qui ne va pas ici? J'ai vérifié que le fichier existe, donc je suppose qu'il est soit:

  • un problème d'autorisation (j'ai ajouté la lecture/écriture des autorisations de stockage externes, mais il peut y avoir des problèmes de niveau inférieur)
  • un problème de chemin du fichier . J'ai fourni un chemin de fichier absolu (comme "/storage/emulated/0/test.jpg"). Est-ce que OpenCV attend un chemin relatif? Si oui, par rapport à quoi?

Répondre

0

Dommage, il était juste que je n'ai pas accepté l'autorisation de stockage sur le téléphone Android 7 -_-