Я использую opencv-sdk-android. Я хочу, чтобы мой родной код возвращал ключевой вектор. Является ли это правильно использовать такой код ..Получение ключевой точки от исходного кода
Vector<KeyPoint> keypoint = FindFeatures(Gray1.getNativeObjAddr(),descriptor.getNativeObjAddr());
и
public native Vector<KeyPoint> FindFeatures(long matAddrGr1, long matAddrGr2);
Мой natice код
extern "C" {
JNIEXPORT Vector<KeyPoint> JNICALL Java_com_example_xyz_MainActivity_FindFeatures(JNIEnv*, jobject, jlong addrGray1, jlong addrdescrptor);
JNIEXPORT Vector<KeyPoint> JNICALL Java_com_example_xyz_MainActivity_FindFeatures(JNIEnv*, jobject, jlong addrGray1, jlong addrdescrptor)
{
Mat& mGr1 = *(Mat*)addrGray1;
Mat& descriptors_1 = *(Mat*)addrdescrptor;
vector<KeyPoint> keypoint_1;
//Do some processing here..
return keypoint_1;
}
}
Если нет, пожалуйста, предложить мне способ заселение вместо себя иного достижения. я новичок в opencv.
Да, это должно работать нормально. вы получили какие-либо ошибки, когда пытаетесь его реализовать? – Darshan
Да, после вызова метода native приложение получает сбой. –
Прошу прощения, я не полностью проверил код. Это не сработает, потому что Vector не является стандартным JNI [type] (http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html#wp9502). вам нужно будет использовать указатели (* env), чтобы получить данные на стороне java. –
Darshan