如何将Opencv Mat对象从本机c ++返回到java? [英] How to return Opencv Mat object from native c++ to java ?
问题描述
我想从java程序访问c ++代码。为此,我使用了JNI的概念。
我在java中声明了一个本机方法,其返回类型是opencv的Mat类,如下所示:
public native Mat getFrames();
然后使用javah实用程序,我使用命令:javah -jni java_class_name创建了我的java类JNITest.h的c实现(头文件)。此头文件如下:
/ * 不要编辑这个文件 - 它是机器生成的* /
#include< jni.h>
/ * JNITest类的标题* /
#ifndef _Included_JNITest
#define _Included_JNITest
#ifdef __cplusplus
extern C {
#endif
/ *
*类:JNITest
*方法:getFrames
*签名:()Lorg / opencv / core / Mat;
* /
JNIEXPORT jobject JNICALL Java_JNITest_getFrames(JNIEnv *,jobject);
#ifdef __cplusplus
}
#endif
#endif
我在cpp中实现了这个Java_JNITest_getFrames方法文件如下:
JNIEXPORT jobject JNICALL Java_JNITest_getFrames(JNIEnv * en,jobject)
{
Mat frame ;
VideoCapture上限( D:\\ImageProcessing\\\\ .jpg);
cap>> frame;
jobject jb;
Mat * ptrImg =& frame;
jb =(jobject)ptrImg;
return jb;
}
但是,上面的代码无效。
那么,如何将opencv Mat类对象转换为这个jobject?
如何返回该对象?
请参阅此Stack Overflow问题:将本地代码中的Mat对象返回给OpenCV中的java [ ^ ]。
I want to access c++ code from java program. For that I used concept of JNI.
I declare one native method in java, whose return type is Mat class of opencv, as follows :
public native Mat getFrames();
Then using javah utility, I created c implementation(Header File) of my java class JNITest.h using command : javah -jni java_class_name. This header file is as follows :
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class JNITest */
#ifndef _Included_JNITest
#define _Included_JNITest
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: JNITest
* Method: getFrames
* Signature: ()Lorg/opencv/core/Mat;
*/
JNIEXPORT jobject JNICALL Java_JNITest_getFrames(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
I implement this Java_JNITest_getFrames method in cpp file as follows:
JNIEXPORT jobject JNICALL Java_JNITest_getFrames(JNIEnv *en, jobject)
{
Mat frame;
VideoCapture cap("D:\\ImageProcessing\\1.jpg");
cap>>frame;
jobject jb ;
Mat * ptrImg = &frame;
jb=(jobject)ptrImg;
return jb;
}
But, this above code is not working.
So, how to convert opencv Mat class object to this jobject ?
And how do I return that object ?
See this Stack Overflow question: "Returning Mat object from native code to java in OpenCV"[^].
这篇关于如何将Opencv Mat对象从本机c ++返回到java?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!