Java API: Fixed bug in Mat port; fixed/implemented all java tests for core module

This commit is contained in:
Andrey Kamaev
2011-08-10 15:56:47 +00:00
parent 04e4eaabaf
commit ebb08bc015
6 changed files with 217 additions and 48 deletions

View File

@@ -1174,27 +1174,27 @@ JNIEXPORT jboolean JNICALL Java_org_opencv_core_Mat_n_1isSubmatrix
//
JNIEXPORT void JNICALL Java_org_opencv_core_Mat_n_1locateROI
(JNIEnv* env, jclass cls, jlong self, jdouble wholeSize_width, jdouble wholeSize_height, jdouble ofs_x, jdouble ofs_y)
JNIEXPORT void JNICALL Java_org_opencv_core_Mat_locateROI_10
(JNIEnv* env, jclass cls, jlong self, jdoubleArray wholeSize_out, jdoubleArray ofs_out)
{
try {
LOGD("Mat::n_1locateROI()");
LOGD("core::locateROI_10()");
Mat* me = (Mat*) self; //TODO: check for NULL
Size wholeSize((int)wholeSize_width, (int)wholeSize_height);
Point ofs((int)ofs_x, (int)ofs_y);
Size wholeSize;
Point ofs;
me->locateROI( wholeSize, ofs );
jdouble tmp_wholeSize[2] = {wholeSize.width, wholeSize.height}; env->SetDoubleArrayRegion(wholeSize_out, 0, 2, tmp_wholeSize); jdouble tmp_ofs[2] = {ofs.x, ofs.y}; env->SetDoubleArrayRegion(ofs_out, 0, 2, tmp_ofs);
return;
} catch(cv::Exception e) {
LOGD("Mat::n_1locateROI() catched cv::Exception: %s", e.what());
LOGD("Mat::locateROI_10() catched cv::Exception: %s", e.what());
jclass je = env->FindClass("org/opencv/core/CvException");
if(!je) je = env->FindClass("java/lang/Exception");
env->ThrowNew(je, e.what());
return;
} catch (...) {
LOGD("Mat::n_1locateROI() catched unknown exception (...)");
LOGD("Mat::locateROI_10() catched unknown exception (...)");
jclass je = env->FindClass("java/lang/Exception");
env->ThrowNew(je, "Unknown exception in JNI code {Mat::n_1locateROI()}");
env->ThrowNew(je, "Unknown exception in JNI code {Mat::locateROI_10()}");
return;
}
}

View File

@@ -549,9 +549,11 @@ public class Mat {
// javadoc: Mat::locateROI(wholeSize, ofs)
public void locateROI(Size wholeSize, Point ofs)
{
n_locateROI(nativeObj, wholeSize.width, wholeSize.height, ofs.x, ofs.y);
double[] wholeSize_out = new double[2];
double[] ofs_out = new double[2];
locateROI_0(nativeObj, wholeSize_out, ofs_out);
if(wholeSize!=null){ wholeSize.width = wholeSize_out[0]; wholeSize.height = wholeSize_out[1]; }
if(ofs!=null){ ofs.x = ofs_out[0]; ofs.y = ofs_out[1]; }
return;
}
@@ -1190,7 +1192,7 @@ public class Mat {
private static native boolean n_isSubmatrix(long nativeObj);
// C++: void Mat::locateROI(Size wholeSize, Point ofs)
private static native void n_locateROI(long nativeObj, double wholeSize_width, double wholeSize_height, double ofs_x, double ofs_y);
private static native void locateROI_0(long nativeObj, double[] wholeSize_out, double[] ofs_out);
// C++: Mat Mat::mul(Mat m, double scale = 1)
private static native long n_mul(long nativeObj, long m_nativeObj, double scale);