如何解决如何通过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 举报,一经查实,本站将立刻删除。