2012-05-08 77 views
0

通過「列表 objectKeypoints」jobject到向量 我目前正在處理一個android應用程序。在java端,我將 List<KeyPoint> objectKeypoints傳遞給本地代碼。但是,我怎樣才能將這個工作對象本地轉換爲 Vector<Keypoint> objectKeypoints進一步處理。 本地代碼

Exaample: Java方面我的調用方法:

List<KeyPoint> objKeypoints; 
Mat mGrayMat = ;// is not empty; 
FeatureDetector featureDetector = FeatureDetector.create(FeatureDetector.SURF); 
featureDetector.detect(obj_keypoints, mGrayMat); 

FindObject(objKeypoints,mGrayMat); 

機端的C++代碼;

JNIEXPORT void JNICALL Java_my_app_AndroidAppView_FindObject(JNIEnv* env, jobject obj, jobject obj_keypoints, jlong matAddrObjGray){ 
// How to convert obj_keypoints to Vector<KeyPoint>? 
Vector<KeyPoint> objectKeypoints = ....; 
Next Step is calculating the descriptors for the Keypoints. 
} 

回答

0

你不能,除非它真的是一個矢量。如果接口只是指定List,則應該將其作爲List來處理。如果您需要Vector,請將界面更改爲需要Vector。

你也可以從列表中建立一個新的Vector,但它看起來毫無價值。

+0

感謝您的回覆。在Java端,我可以更改第一行:「列表 objKeypoints;」以「Vector objKeypoints;」一般來說,我不知道如何在本機投射jobject到Vector UniQ

+0

@Uniq如果你可以改變界面,你根本不需要做任何投射。事實上,在JNI中沒有這樣的事情。您只需查找您想要從其聲明的類中調用的方法,然後調用它們即可。如果該對象不屬於該類,則會發生異常。 – EJP