Rückgabe des Mat-Objekts aus dem systemeigenen Code an Java in OpenCV

8

Ich habe eine OpenCV Android App. Der meiste Code ist in Java, aber ich habe eine Funktion, die in C ist Die Funktion erhält ein Mat-Objekt und gibt ein neues Objekt zurück.

Meine Frage ist, wie kann ich eine Mat vom nativen Code nach Java zurückgeben? Konnte kein Beispiel dafür finden.

Danke.

    
Saqib Razaq 30.03.2012, 00:46
quelle

2 Antworten

20

Heute musste ich eine Matte aus nativem Code zurückgeben. Ich habe mit "Tutorial 2 Advanced - 2. Mix Java + Native OpenCV" begonnen und übergibt bereits zwei Mat (Bilder von der Kamera aufgenommen) Objekte an den nativen Code. Aber ich wollte das extrahierte Feature zurückgeben, also habe ich jlong addrDescriptor zur Signatur hinzugefügt:

%Vor%

Im java Teil habe ich die Mat

hinzugefügt %Vor%

Die Methode getNativeObjAddr() macht den Trick. Die Mat wird in Java zugewiesen und ihre Adresse wird an den systemeigenen Code übergeben, daher gibt es keine explizite Rückgabe.

%Vor%

Die Mat wurde mit den erforderlichen Daten gefüllt und ist direkt im Java-Code zugänglich, nachdem die JNI-Invokation zurückgegeben wurde.

Irgendwo sonst im Code ist die Mat freigegeben:

%Vor%     
stacker 07.04.2012, 09:06
quelle
0

in C ++

%Vor%

in Java:

%Vor%

Achtung: Sie müssen neue Mat () in C, wenn Sie Code ist: Mat Mat (); Mat Objekt Speicher wird gesammelt werden, wenn FunC () endet.

    
K Lam 16.03.2018 04:09
quelle

Tags und Links