如何通过 Android intent 发送 opencv Mat 列表
how to send a list of opencv Mat via Android intent
我有一个 openCV Mat 列表,并试图将我的所有列表从 Activity1 传递到 Activity2,但我不知道如何实现它。这个我已经看过了 但是把 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
class实现parcelable接口,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()
在你的每个垫子上使用 getNativeObjAddr
(一个 Int
)并在你的 Intent
中存储一个 List<Int>
。然后在另一边使用 Mat(Int)
构造函数重新创建 List<Mat>
。
如果这不起作用,请查看您如何创建 Mat
对象,如果您再次使用 byte[]
,请尝试在 Intent 中发送它。
我有一个 openCV Mat 列表,并试图将我的所有列表从 Activity1 传递到 Activity2,但我不知道如何实现它。这个我已经看过了
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
class实现parcelable接口,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()
在你的每个垫子上使用 getNativeObjAddr
(一个 Int
)并在你的 Intent
中存储一个 List<Int>
。然后在另一边使用 Mat(Int)
构造函数重新创建 List<Mat>
。
如果这不起作用,请查看您如何创建 Mat
对象,如果您再次使用 byte[]
,请尝试在 Intent 中发送它。