OpenCV에서 (자주) 다루는 vector<Point2f> 타입의 변수의 값을 JAVA 코드로 리턴하는 방법입니다.
깔끔한 방법을 찾지 못해 정리해 둡니다^^ 아울러, 이전에 정리했던 방법에는 문제가 있어 수정본을 다시 써 놓습니다.
JAVA Code :
public native double[][] callNativeCode(long matAddrInput); Mat input = new Mat(480, 640, CV_8UC3); double[][] ret = callNativeCode(input.getNativeObjAddr());
HPP Code :
JNIEXPORT jobjectArray JNICALL Java_org_airpage_Activity_MainActivity_callNativeCode (JNIEnv *, jobject, jlong);
CPP Code :
JNIEXPORT jobjectArray JNICALL Java_org_airpage_Activity_MainActivity_callNativeCode (JNIEnv *env, jobject instance, jlong matAddrInput) { vector<Point2f> retapprox = someFunc(); jobjectArray result = NULL; for (int k = 0; k < size; k++) { jdoubleArray element = env->NewDoubleArray(2); if (element == NULL) break; jdouble buf[2] = { retapprox[k].x, retapprox[k].y }; env->SetDoubleArrayRegion(element, 0, 2, buf); env->SetObjectArrayElement(result, k, element); } return result; }
건투를 빕니다~!
이 게시물이 | |
AiRPAGE가 |