2014-03-31 107 views
0

我想從我的C++源代碼返回一個Mat對象到我的Java代碼。我有以下代碼:JNI墊到Java墊

C++:

JNIEXPORT void JNICALL *snip*_MainActivity_grabResult 
(jlong matPtr) { 
    LOGD("The resultsImg has %d rows.", resultsImg.rows); 
    LOGD("The sceneImg has %d rows.", sceneImg.rows); 
    Mat* mat = new Mat(resultsImg.rows, resultsImg.cols, CV_8UC3); 
    mat = (Mat*) matPtr; 
    LOGD("Mat resultsImg is: %d", resultsImg.rows); 
    LOGD("Mat* mat is %d", mat->rows); 
} 

的Java:

public static native void grabResult(long add); 
grabResult(m.getNativeObjAddr()); 

然而,它似乎並沒有通過墊傳遞給我的Java作爲墊的行大小在Java中是零,在C++代碼中它是一個荒謬的數字,它不應該是一個數字。

任何協助將是偉大的。

+0

什麼是matptr(在c + +代碼中)?你爲什麼用它覆蓋新創建的Mat? – berak

+0

請參閱審查的代碼。老實說,我不知道我在做什麼 - 這是我在網上查找的東西。 – ieen

回答

0

什麼是* snip *?本地方法可能是這樣的:

JNIEXPORT void JNICALL Java_*snip*_MainActivity_grabResult(JNIEnv * env, jobject obj, jint matPtr) {}