使用 JNI 传递和返回 OpenCv Mat 对象
Posted
技术标签:
【中文标题】使用 JNI 传递和返回 OpenCv Mat 对象【英文标题】:Pass and return OpenCv Mat object with JNI 【发布时间】:2014-03-31 02:43:06 【问题描述】:我想在 JNI 中写一个这样的函数:
JNIEXPORT jobject JNICALL Java_com_datumdroid_android_ocr_simple_HoughLine_nativeDetectLine
(JNIEnv * jenv, jclass, jstring fileInput, jobject mat)
Java 接口是:
nativeDetectLine( String fileInput, Mat mat);
现在我想将 Mat 传递给 JNI 并更改它的值。
谁能给我一个教程或指南? 具体如何处理作业。
【问题讨论】:
【参考方案1】:http://answers.opencv.org/question/12271/can-the-java-interface-pass-a-mat-to-opencvs-c/
JNIEXPORT void JNICALL Java_org_opencv_samples_tutorial2_Tutorial2Activity_FindFeatures(JNIEnv*, jobject, jlong addrGray, jlong addrRgba)
Mat& mGr = *(Mat*)addrGray;
Mat& mRgb = *(Mat*)addrRgba;
... do stuff with the Mat objects ...
【讨论】:
首先将 jlong 转换为 Mat* ,然后取消引用它。以上是关于使用 JNI 传递和返回 OpenCv Mat 对象的主要内容,如果未能解决你的问题,请参考以下文章
使用 jni 和 OpenCV 创建的带有 lib 的未定义符号
在YUV_420_888中将图像从Android发送到OpenCV Mat中的JNI的最有效方式
将 YUV_420_888 中的图像从 Android 发送到 OpenCV Mat 中的 JNI 的最有效方法