传递CV:从Android的垫JNI [英] Passing cv:Mat from android to jni

查看:186
本文介绍了传递CV:从Android的垫JNI的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从Android端发送一个垫子对象JNI的一面,我不想送垫目标地址。
但我的JNI code无在垫行,这我没有得到的返回0。

Android的Java的code是:

  buttton.setOnClickListener(新OnClickListener(){
    @覆盖
    公共无效的onClick(视图v){
         Utils.bitmapToMat(位图,垫);
         Log.d(TAG,Integer.toString(m.rows())++ Integer.toString(m.cols()));        textView.setText(Integer.toString(openCVJNI(米)));
    }
});

JNI code是:

 的externC{
    JNIEXPORT jint JNICALL
    Java_com_example_color_MainActivity_openCVJNI(JNIEnv的* ENV,jobject THIZ,垫inputImage的)
    {
       返回inputImage.rows;
    }
}


解决方案

请参阅的https://github.com/Itseez/opencv/tree/master/samples/android/tutorial-2-mixedprocessing样本。

org.opencv.core.Mat getNativeObjAddr 方法,它返回,它可以作为PTED指向 CV ::垫。

Java的code:

  openCVJNI(m.getNativeObjAddr());

JNI code:

  Java_com_example_color_MainActivity_openCVJNI(JNIEnv的* ENV,jobject THIZ,长addrInputImage)
{
    CV ::垫* pInputImage =(CV ::垫*)addrInputImage;
    返回pInputImage->的行;
}

I'm trying to send a Mat object from android side to jni side, i do not want to send mat object address. But my jni code returns 0 for no of rows in Mat, which i'm not getting.

Android-Java code is :

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 code is :

extern "C" {
    JNIEXPORT jint JNICALL
    Java_com_example_color_MainActivity_openCVJNI(JNIEnv *env, jobject thiz, Mat inputImage)
    {   
       return inputImage.rows;
    }
}

解决方案

See https://github.com/Itseez/opencv/tree/master/samples/android/tutorial-2-mixedprocessing sample.

org.opencv.core.Mat has getNativeObjAddr method, it returns long, which can be interpreted as pointer to cv::Mat.

Java code:

openCVJNI(m.getNativeObjAddr());

JNI code:

Java_com_example_color_MainActivity_openCVJNI(JNIEnv *env, jobject thiz, long addrInputImage)
{
    cv::Mat* pInputImage = (cv::Mat*)addrInputImage;
    return pInputImage->rows;
}

这篇关于传递CV:从Android的垫JNI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆