De retour Mat objet à partir du code natif de java dans OpenCV
J'ai un OpenCV application Android. La plupart du code est en Java, mais j'ai
une fonction qui est en C.
La fonction reçoit un Tapis objet et retourne un nouveau.
Ma question est comment puis-je retourner un Tapis à partir du code natif pour Java?
Je ne trouve pas d'exemple.
Grâce.
OriginalL'auteur Saqib Razaq | 2012-03-30
Vous devez vous connecter pour publier un commentaire.
Aujourd'hui, j'ai dû retourner un Tapis de code natif. J'ai commencé avec "Tutoriel 2 Avancé - 2. Mélanger Java+Native OpenCV" déjà, elle passe à deux Tapis (les Images capturées par la caméra) des objets pour le code natif.
Mais je voulais revenir extrait fonctionnalité, donc j'ai ajouté
jlong addrDescriptor
à la signature:Dans le java partie que j'ai ajouté le Tapis
La méthode
getNativeObjAddr()
fait le tour. Le Tapis est alloué à java et à son adresse est passée à du code natif, donc il n'y a pas explicite retour.Le Tapis a été rempli avec les données nécessaires et est accessible directement dans le code java après la JNI invokation retourne.
Somwhere ailleurs dans le code, le Tapis est sorti:
la signature est
void medianBlur(const Mat& src, Mat& dst, int ksize)
vous avez besoin de l'invoquer avec une référence à la transformation. essayez&processing
. Ou le définir commeMat& processing(image.size(), CV_8UC3);
Si vous voulez retourner à la
Mat &dst
, alors vous devez les déclarer dans votre code java et l'ajouter à l'invocation de la JNI méthode de la même manière que vous avez ajoutéimage
.qu'entendez-vous par
Somwhere else in the code the Mat is released:
que le code (les 3 dernières lignes de la poste) doit être appelée pour libérer de la mémoire après le travail est fait.
OriginalL'auteur stacker
en C++
en java:
Attention: Vous devez de nouveau sur le Tapis() en C,si vous le code est : Mat Mat();tapis de mémoire d'objet sera de recueillir lorsque la touche funC() fin.
OriginalL'auteur K Lam