在Android中的JNI传递参数时出错

时间:2013-07-09 10:33:26

标签: android opencv java-native-interface parameter-passing

首先,感谢您阅读此消息,您的时间非常感谢。

我的问题是我试图在Android中的JNI中传递一些简单的数据而且我会疯了!

这很简单但仍然失败。

我在JAVA中有这段代码

public Mat process(Mat rgb) {
    Mat n;
    if(rgb.empty()) {
        System.out.println("Empty Image");
        n = null;
    }
    else {
        System.out.println("The image is " + rgb.rows() + "x" + rgb.cols());
        n = nativeSkinFilter(mNativeObj, rgb.dataAddr(), rgb.rows(), rgb.cols());
    }   
    return n;
}

private static native Mat nativeSkinFilter(long thiz, long inputImage, int rows, int cols);

这在C ++中

(DetectionBasedTracker_jni.h)

JNIEXPORT jlong JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeSkinFilter (JNIEnv *, jclass, jlong, jint, jint);

(DetectionBasedTracker_jni.cpp)

JNIEXPORT jlong JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeSkinFilter (JNIEnv * jenv,jclass,jlong rgb, jint rows, jint cols)
{

LOGD("El tamaño de rgb es %i e %i", rows, cols);
return (long) 0;

} 

我现在唯一想要的是显示矩阵有多少行和列(我稍后会做一些其他功能)。但令人惊讶的是,输出是下一个。

I/System.out(29458): The image is 480x800
D/FaceDetection/DetectionBasedTracker(29458): El tama�o de rgb es 1969692688 e 0

为什么它不显示480和800 ??

我真的需要一些帮助,我疯了!

非常感谢您的阅读!非常感谢你的帮助!

0 个答案:

没有答案