2023-01-20 269
在爪哇一侧我有
List<Mat> arystrdimages = new ArrayList<Mat>();
随后从外部目录中的文件夹中读取的图像被添加到列表
中
for(File f : strdimgs)
{
Mat tempimg = Highgui.imread(f.getAbsolutePath(), CvType.CV_8UC1);
arystrdimages.add(tempimg);
}
在本机JNI侧我想通过引用访问aryStrdimages.
对于一个单个垫子对象,我们可以通过调用getNativeObjAddr方法来完成此操作,即在opencv4android示例中,用于垫子对象.
java
private Mat mRgba;
打电话给本地端
CallNative(mRgba.getNativeObjAddr());
在本地侧
JNIEXPORT void JNICALL Java_org_opencv_samples_tutorial2_Tutorial2Activity_CallNative(JNIEnv *env, jobject thiz, jlong addrRgba1)
{
Mat& mRgb = *(Mat*)addrRgba1;
}
如何对List<Mat>对象?
编辑:您建议的解决方案的实现
java side
int elems = arystrdimages.size();
Log.v("Matobjdata", "number of Matobject read = " + elems);
//Log.v("Matobjdata", "from native = " + ans);
long[] tempobjadr = new long[elems];
for (int i=0; i<elems; i++)
{
Mat tempaddr = arystrdimages.elementAt(i);
tempobjadr[i] = tempaddr.getNativeObjAddr();
}
Log.v("Matobjdata", "addresselementsinlong arrray = " + tempobjadr.length);
int ans = TrainDescriptors(tempobjadr); // Call to native function
Log.v("Matobjdata", "from native = " + ans);
本地侧
JNIEXPORT jint JNICALL Java_org_opencv_samples_tutorial2_Tutorial2Activity_TrainDescriptors(JNIEnv *env, jobject trainobject, jlongArray traindataaddr)
{
vector<Mat> trainimgs;
jsize a_len = env->GetArrayLength(traindataaddr);
jlong *traindata = env->GetLongArrayElements(traindataaddr, 0);
for(int k=0; k<a_len; k++)
{
Mat & newimage=*(Mat*)traindata[k];
trainimgs.push_back(newimage);
}
// Do the required manipulation on the images;
env->ReleaseLongArrayElements(traindataaddr, traindata, 0);
return a_len;
}
您可以在Java中构建一系列长值(所有垫子的getNativeObjaddr()结果)并调用通过数组的本机功能.
在JNI中,您可以使用getArrayLength和getlongarrayelements访问所有长值(将jlong返回到第一个元素).
完成后使用releaseLoneNongarrayElements.
以上所述是小编给大家介绍的如何将ArrayList<Mat>从Java传递到本地(NDK)的opencv for android中?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26012.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态