我正在尝试将一个Mat对象从android端发送到jni端,我不想发送mat对象地址。 但是我的jni代码在Mat中没有行返回0,我没有得到。
Android-Java代码是:
buttton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Utils.bitmapToMat(bitmap, mat);
Log.d(TAG,Integer.toString(m.rows())+" "+Integer.toString(m.cols()));
textView.setText(Integer.toString(openCVJNI(m)));
}
});
JNI代码是:
extern "C" {
JNIEXPORT jint JNICALL
Java_com_example_color_MainActivity_openCVJNI(JNIEnv *env, jobject thiz, Mat inputImage)
{
return inputImage.rows;
}
}
答案 0 :(得分:5)
请参阅https://github.com/Itseez/opencv/tree/master/samples/android/tutorial-2-mixedprocessing示例。
org.opencv.core.Mat
有getNativeObjAddr
方法,它返回long
,可以将其解释为指向cv::Mat
的指针。
Java代码:
openCVJNI(m.getNativeObjAddr());
JNI代码:
Java_com_example_color_MainActivity_openCVJNI(JNIEnv *env, jobject thiz, long addrInputImage)
{
cv::Mat* pInputImage = (cv::Mat*)addrInputImage;
return pInputImage->rows;
}