微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过Android Intent发送opencv Mat列表

如何解决如何通过Android Intent发送opencv Mat列表

我有一个openCV Mat列表,试图将所有列表从Activity1传递给Activity2,但我不知道如何实现。我已经看到了这个link for send only 1 mat ,但一个一个地发送Mat似乎不是解决方案。

Intent i = new Intent( Activity1.this,Activity2.class );
i.putExtra("someExtra",someExtra);
i.putExtra("list",ArrayList<Mat> ); ///I wan't to do something like that.
startActivity(i);
Activity1.this.finish();


// Activity2
getIntent().getExtra("list");   // get my list

解决方法

使Mat类实现可拆分接口this is an official link

在那之后,下面的代码应该起作用:

Intent i = new Intent( Activity1.this,Activity2.class );
i.putExtra("someExtra",someExtra);
i.putExtra("list",ArrayList<Mat> ) 

要获取数据,请使用:

 ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("list");
,

您需要发送构成Mat对象的原始对象,并在另一侧重建Mat。

我自己还没有做这件事,但是看一下javadoc,有一些选择:

https://docs.opencv.org/3.4/javadoc/org/opencv/core/Mat.html

一种可能是使用本机地址和地址构造函数。即:

https://docs.opencv.org/3.4/javadoc/org/opencv/core/Mat.html#%3Cinit%3E(long)https://docs.opencv.org/3.4/javadoc/org/opencv/core/Mat.html#getNativeObjAddr()

在每个Mat(一个getNativeObjAddr)上使用Int,并将一个List<Int>存储在您的Intent中。然后,另一方面,使用List<Mat>构造函数重新创建Mat(Int)

如果这不起作用,请查看如何创建Mat对象,如果使用byte[],然后再次尝试使用Intent发送。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。